[英]How do you do a contains query using the MongoDB node.js driver?
我正在尝试对包含某个子字符串的项目进行搜索,但我没有得到任何结果(即使我知道数据适合查询,包括大小写):
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.org/display/DOCS/Advanced+Queries#AdvancedQueries-RegularExpressions
试试这个:
var keyword = req.params.keywords;
var regex = RegExp(".*" + keyword + ".*");
Note.find({noteBody: regex, userID: userID})
我从请求参数中得到了关键字,我想用这些关键字从 noteBody 中搜索,现在关键字是一个变量。 如果要在数据库中查找一个变量,格式必须是var regex = RegExp("." + keyword + ".")。 希望这可以帮助。 谢谢
我是这样做的
keyword = "text_to_search";
collection.find({name: {$Regex: keyword, $options:$i }})
我使用 i $i 使查询不区分大小写,但您也可以使用其他选项
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.