Javascript Mongodb Nodejs正则表达式查询
我正在使用模块“mongodb”从节点JSAPI查询mongodb。我正在尝试通过搜索查询搜索联系人文档。其选择器如下所示:Javascript Mongodb Nodejs正则表达式查询,javascript,regex,node.js,mongodb,Javascript,Regex,Node.js,Mongodb,我正在使用模块“mongodb”从节点JSAPI查询mongodb。我正在尝试通过搜索查询搜索联系人文档。其选择器如下所示: selector['users.name'] = {$regex: new RegExp(params.query), $options:"i"} 假设用户的名字是“Sagar Gopale”,搜索查询是“Sagar”甚至是“Gopale”,那么上面的操作会很好,并正确返回结果。但若我将搜索查询输入为“sagargopale”,它将返回空结果。有人能给我一个解决方案,让
selector['users.name'] = {$regex: new RegExp(params.query), $options:"i"}
假设用户的名字是“Sagar Gopale”,搜索查询是“Sagar”甚至是“Gopale”,那么上面的操作会很好,并正确返回结果。但若我将搜索查询输入为“sagargopale”,它将返回空结果。有人能给我一个解决方案,让我可以输入搜索查询,包括空间吗
提前感谢。实际上,如果您坚持使用
regexp
a方法,您会遇到很多困难,我建议您创建一个text
索引:
collection.createIndex({"users.name" : "text"});
然后,您将在何时搜索:
db.collection('users').find({
$text: {
$search: params.query,
$caseSensitive: false,
}
});
通过这种方式,当您使用“Sagar”、“Sagar”、“Sagar gopa”、“gopale Sagar”以及这2种语言的多种组合时,您将得到结果
如果您有一个自动完成,或者客户机不知道确切的名称,那么这种方法非常有效。Mongo处理了将匹配字母的强文本搜索算法,即使字母顺序不正确。您确定
sagar
和gopale
之间的空间是一个规则的\x20
空间吗?