如何使用MongoDB node.js驱动程序进行包含查询?

Mik*_*ras 5 mongodb node.js

我正在尝试搜索包含某个子字符串的项目,但我没有得到任何结果(即使我知道数据适合查询,包括大小写):

collection.find({name: "/.*" + keyword + ".*/"}).toArray(function(err, items)
Run Code Online (Sandbox Code Playgroud)

这不应该匹配包含关键字的所有内容吗?它只返回一个空对象.

我只是在ExpressJS应用程序中使用常规MongoDB驱动程序.

Ada*_*ord 5

你需要首先构建一个正则表达式,如下所示:

var regex = RegExp("/.*" + keyword + ".*/")
Run Code Online (Sandbox Code Playgroud)

然后将变量传递给查询.我通常发现将查询作为变量更容易并将其传递到:

var query = { FieldToSearch: new RegExp('^' + keyword) };
collection.find(query).toArray(...)
Run Code Online (Sandbox Code Playgroud)

我已将正则表达式作为左根正则表达式包含在内以利用索引(如果可能的话,总是建议使用索引).如需更多信息,请点击此处:

http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-RegularExpressions