在节点js中使用$ regex mongodb查询不起作用

时间:2015-02-18 12:24:32

标签: javascript regex node.js mongodb


 从节点js,我试图基于不区分大小写的关键字检索文档。当我直接从mongo db控制台尝试时,我能够看到结果。

db.users.findOne({"displayName":{$regex: /.*abc./, $options:"i"}})

但是当我在节点js中尝试相同的时候,我的结果是空的。

var selector = { "displayName": {$regex: "/.*abc./", $options:"i"}}

这是因为正则表达式不在javascript中。
任何人都可以帮助我。

3 个答案:

答案 0 :(得分:19)

$regex值必须是要匹配的字符串模式或正则表达式对象。传递字符串模式时,您不会在node.js代码中包含/分隔符。

因此,其中任何一个都可以在node.js中使用:

var selector = {"displayName": {$regex: ".*abc.", $options:"i"}}

OR

var selector = {"displayName": {$regex: /.*abc./, $options:"i"}}

答案 1 :(得分:10)

你可以试试这个,它对我有用。

var getValue='abc';
db.users.findOne({"displayName": new RegExp(regexValue, 'i')},function(err,res){if(err){console.log(err);}

否则{的console.log(res.length);} } )

答案 2 :(得分:1)

在mongodb控制台中 试试这个查询

db.users.findOne({“ displayName”:{$ regex:“。* abc”,$ options:“ i”}})

和在nodejs中 var选择器= users.find({“ displayName”:{$ regex:“。* abc”,$ options:“ i”}})

此处users =是集合名称