您如何使用MongoDB node.js驱动程序进行包含查询?
我正在尝试对包含某个子字符串的项目进行搜索,但是没有返回任何结果(即使我知道数据适合查询,包括大小写):
collection.find({name: "/.*" + keyword + ".*/"}).toArray(function(err, items)
是否应该与包含关键字的所有内容都不匹配?它只是返回一个空对象。
我只是在ExpressJS应用中使用常规的MongoDB驱动程序。
回答如下:您首先需要构建一个正则表达式,应该尝试这样的事情:
var regex = RegExp("/.*" + keyword + ".*/")
然后将变量传递给查询。我通常发现更容易将查询作为变量并将其传递给:
var query = { FieldToSearch: new RegExp('^' + keyword) };
collection.find(query).toArray(...)
我将正则表达式作为左根正则表达式包括在内,以利用索引(如果可能,建议始终使用以提高性能)。要了解更多信息,请点击这里:
http://www.mongodb/display/DOCS/Advanced+Queries#AdvancedQueries-RegularExpressions