Mongodb 文本搜索(精确匹配、模糊匹配)

时间:2021-04-12 08:52:30

标签: mongodb mongodb-query

我们使用 mongo 文本索引在多个字段之间进行实体搜索。 真正让我困惑的是 mongo 的文本搜索返回的结果。

背景

假设我们有一个包含名字和姓氏字符串字段的用户集合。两个字段都添加了文本索引。

await collection.createIndex({ firstName: 'text', lastName: 'text' }, { name: 'users_text_index' });

而User集合有以下两个文档:

  • 第一个文档:{_id: xxx, firstname: "firstname", lastname: "lastname" }
  • 第二个文件:{_id: xxx, firstname: "firstname1", lastname: "lastname1" }

我们使用 NodeJs 实现了具有以下文本搜索语法的搜索(其中“关键字”是传入参数,表示最终用户使用的关键字)

{ $text: { $search: keyword } }

结果

  • 当我们使用“lastna”进行搜索时,我们得到了两个文档
  • 当我们使用“lastname”进行搜索时,我们只得到了第一个(完全匹配)

问题

我想知道为什么,一旦我们得到完全匹配,第二个文档将不再由 mongo 返回?

除了在每个搜索字段上用正则表达式替换 $Or 条件集合替换文本搜索之外,我们还能做什么,以便始终返回所有匹配项(完全匹配和相似匹配)?

非常感谢

0 个答案:

没有答案
相关问题