Mongodb Nodejs Regex Query

Mongodb Nodejs Regex Query

本文关键字:Query Regex Nodejs Mongodb      更新时间:2023-09-26

我正在使用模块"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"以及这 2 种组合的许多组合时,您将获得结果。

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