Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Mongodb Nodejs正则表达式查询_Javascript_Regex_Node.js_Mongodb - Fatal编程技术网

Javascript Mongodb Nodejs正则表达式查询

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”,它将返回空结果。有人能给我一个解决方案,让

我正在使用模块“mongodb”从节点JSAPI查询mongodb。我正在尝试通过搜索查询搜索联系人文档。其选择器如下所示:

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
空间吗?