我正在尝试搜索包含特定子字符串的项目,但是返回的结果为空(即使我知道查询的数据是正确的,包括大小写):
collection.find({name: "/.*" + keyword + ".*/"}).toArray(function(err, items)
这个查询不应该匹配包含关键字的所有内容吗?它只返回了一个空对象。
我只是在ExpressJS应用程序中使用常规的MongoDB驱动程序。
我正在尝试搜索包含特定子字符串的项目,但是返回的结果为空(即使我知道查询的数据是正确的,包括大小写):
collection.find({name: "/.*" + keyword + ".*/"}).toArray(function(err, items)
这个查询不应该匹配包含关键字的所有内容吗?它只返回了一个空对象。
我只是在ExpressJS应用程序中使用常规的MongoDB驱动程序。
首先,您需要构建一个正则表达式,可以尝试这样写:
var regex = RegExp("/.*" + keyword + ".*/")
然后将变量传递给查询语句。我通常发现将查询语句作为变量更容易,并将其传递给查询:
var query = { FieldToSearch: new RegExp('^' + keyword) };
collection.find(query).toArray(...)
keyword = "text_to_search";
collection.find({name: {$Regex: keyword, $options:$i }})
我从请求参数中获取了关键词,想要在noteBody中使用这些关键词进行搜索,现在关键词是一个变量。如果你想在数据库查询中使用变量,格式必须为 var regex = RegExp("." + keyword + "."). 希望能帮到你。谢谢。
试试这个:
var keyword = req.params.keywords;
var regex = RegExp(".*" + keyword + ".*");
Note.find({noteBody: regex, userID: userID})