javascript - Mongodb Nodejs 正则表达式查询

标签 javascript regex node.js mongodb

我正在使用模块“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/

相关文章:

php - 来自 PHP Chunked Response 的 HTML5 视频标签,可能吗?

javascript - 旋转 div 时获取 CSS 左侧和顶部

python regex-什么意思-(破折号)是什么意思

eclipse - 如何创建 typescript 项目?

javascript - 如何创建动态计划任务?

javascript - 单击按钮时 Ajax 重新加载 div 内容

javascript - 为什么 JavaScript 对象不会为当前为空的嵌套对象设置值

javascript - 如何将 "/b"放入正则表达式对象中?

javascript - 替换字符串中的数字

node.js - 使用 docker-compose 设置带有 redis 的 Node