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

Soo*_*ash 13 javascript regex mongodb node.js


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

db.users.findOne({"displayName":{$regex: /.*abc./, $options:"i"}})
Run Code Online (Sandbox Code Playgroud)

但是当我在节点js中尝试相同时,我得到空的结果.

var selector = { "displayName": {$regex: "/.*abc./", $options:"i"}}
Run Code Online (Sandbox Code Playgroud)

这是由于正则表达式不是在JavaScript中.
任何人都可以帮助我.

Joh*_*yHK 20

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

所以这些都可以在node.js中使用:

var selector = {"displayName": {$regex: ".*abc.", $options:"i"}}
Run Code Online (Sandbox Code Playgroud)

要么

var selector = {"displayName": {$regex: /.*abc./, $options:"i"}}
Run Code Online (Sandbox Code Playgroud)


小智 11

你能不能试试这个,它适合我.

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

else {console.log(res.length);}})


小智 5

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

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

在nodejs中 var selector = users.find({ "displayName": {$regex: ".*abc", $options:"i"}})

这里的 users = 是一个集合名称