Node.js “我如何使用”;例如;猫鼬号接线员?

Node.js “我如何使用”;例如;猫鼬号接线员?,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,我在使用mongoose进行查询时遇到了一个问题。我遵循以下步骤进行编码。但它返回空白 var promise = UserSchema.find({name: /req.params.keyword/ }).limit(5); 这是我的代码返回空白 var promise = UserSchema.find({name: /req.params.keyword/ }).limit(5); 我试过这个退货 var n=john;var promise=UserSchema.find({n

我在使用mongoose进行查询时遇到了一个问题。我遵循以下步骤进行编码。但它返回空白

 var promise = UserSchema.find({name: /req.params.keyword/ }).limit(5);
这是我的代码返回空白

 var promise = UserSchema.find({name: /req.params.keyword/ }).limit(5);
我试过这个退货

var n=john;var promise=UserSchema.find({name:/n/}).limit(5)

但我试过了,这是有效的

 var promise = UserSchema.find({name: /john/ }).limit(5);

为什么使用变量然后返回空白?

在mongodb中使用
$regex

范例

select * from table where abc like %v%
在蒙哥

 var colName="v";
 models.customer.find({ "abc": { $regex: '.*' + colName + '.*' } },
   function(err,data){
         console.log('data',data);
  });
您的查询看起来像

var name="john";
UserSchema.find({name: { $regex: '.*' + name + '.*' } }).limit(5);

可以使用RegExp对象生成带有变量的正则表达式,如果希望搜索不区分大小写,请添加“i”标志

const mongoose = require('mongoose');
const User = mongoose.model('user');

const userRegex = new RegExp(userNameVariable, 'i')
return User.find({name: userRegex})
或者干脆

const name = "John"
UserSchema.find({name: {$regex: name, $options: 'i'}}).limit(5);

i对于不区分大小写的

我就是这样做的,以查找名称/电子邮件中是否存在搜索字符串。 希望它能帮助别人

const getPeerSuggestions=async(请求、恢复、下一步)=>{
const{search}=req.query;
const rgx=(pattern)=>newregexp(`.*${pattern}.*`);
const searchRgx=rgx(搜索);
const peers=wait User.find({
$or:[
{name:{$regex:searchRgx$options:“i”},
{电子邮件:{$regex:searchRgx$options:“i”},
],
})
.限额(5)
.接住(下一个);
res.json(对等体);
};

没有
aggregate
它对我不起作用。但这确实:

db.dbname.aggregate([{ "$match" : {"name" : { $regex: '.*SERGE.*', $options: 'i' } }}, { $sort: { "createdTime" : -1 }} ]).pretty()

/../语法仅适用于字符串,不适用于变量。您链接的问题中的许多答案都提供了您的答案。谢谢您的回答。以上发现区分大小写。我如何使用不区分大小写的方法来实现这一点?您阅读过文档吗?您需要在选项
i
中使用
{:{$regex:'pattern',$options:'}}
,例如,
{name:{$regex:req.params.keyword,$options:'i'}
i
用于区分大小写