我正在使用模块“mongodb”从 Node js API 查询 mongodb。我正在尝试通过搜索查询来搜索联系人文档。其选择器如下:
selector['users.name'] = {$regex: new RegExp(params.query), $options:"i"}
假设用户的名字是“Sagar Gopale”,搜索查询是“sagar”甚至“gopale”,那么上面的代码可以正常工作并正确返回结果。但是,如果我输入搜索查询“sagar gopale”,它会返回空结果。有人可以为我提供一个解决方案,以便我可以输入包含空格的搜索查询吗?
提前致谢。
最佳答案
实际上,如果您坚持使用regexp
方法,这里会遇到很多困难,我建议您创建一个text
索引:
collection.createIndex({"users.name" : "text"});
然后当您搜索时:
db.collection('users').find({
$text: {
$search: params.query,
$caseSensitive: false,
}
});
这样,当您使用“Sagar”、“sagar”、“sagar gopa”、“gopale sagar”以及这两者的多种组合时,您将得到结果。
如果您有自动完成功能,或者客户端不知道确切的名称,则此方法非常有效。 Mongo 使用强大的文本搜索算法来匹配字母,即使它们的顺序不正确。
关于javascript - Mongodb Nodejs 正则表达式查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35009315/