【问题标题】:Mongodb Nodejs Regex QueryMongodb Nodejs正则表达式查询
【发布时间】:2016-01-26 08:09:20
【问题描述】:

我正在使用模块“mongodb”从节点 js API 查询 mongodb。我正在尝试通过搜索查询来搜索联系人文档。相同的选择器如下:

selector['users.name'] = {$regex: new RegExp(params.query), $options:"i"}

假设用户的名字是“Sagar Gopale”,搜索查询是“sagar”甚至是“gopale”,那么上面的工作正常并正确返回结果。但是,如果我将搜索查询输入为“sagar gopale”,它会返回空结果。有人可以为我提供一个解决方案,以便我可以输入包括空格在内的搜索查询?

提前致谢。

【问题讨论】:

  • 您确定sagargopale 之间的空格是常规\x20 空格吗?

标签: javascript regex node.js mongodb


【解决方案1】:

其实如果你坚持regexp的方式你会遇到很多困难,我建议你创建一个text索引:

collection.createIndex({"users.name" : "text"});

然后你什么时候搜索:

db.collection('users').find({
  $text: {
    $search: params.query,
    $caseSensitive: false,
  }
});

通过这种方式,当你使用“Sagar”、“sagar”、“sagar gopa”、“gopale sagar”以及这两者的许多组合时,你会得到结果。

如果您有自动完成功能,或者客户端不知道确切的名称,这种方法非常有效。 Mongo 处理了匹配字母的强大文本搜索算法,即使它们的顺序不正确。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-05
    • 1970-01-01
    • 2013-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多