Mongodb,通过多个字段中的文本搜索查找匹配项

时间:2018-12-10 21:55:07

标签: mongodb

我的文档中包含名字,姓氏,身份证号和电话字段。

我想进行文本搜索以检索包含一个或多个搜索词的文档。

例如:

{"$text":{"$search":"JOHN YES"}}

检索任何索引字段中包含JOHN或YES的所有文档。

但是

{"$text":{"$search":" \"JOHN\"  \"YES\" "}}

精确检索其first_name精确为JOHN且last_name精确为YES的文档

但是

{"$text":{"$search":" \" JOHN YES \" "}}

不响应任何内容,因为任何字段都完全是JOHN YES

由于我不知道哪个部分与哪个字段相关,因此无法使用。

我想要的是如果我这样查询:

"JOHN YES SOMEID_NO"

它应该返回包含任何搜索字段中一个或多个单词的文档。

示例结果:

1. first_name: JOHN
2. first_name JOHN YES
3. first_name JOHN, last_name YES
4. id_no: SOMEID_NO
5. first_name: YES 

或类似的组合。

1 个答案:

答案 0 :(得分:0)

通过包含引号,您正在搜索引号内的确切短语。包括空格。

您正在搜索" JOHN YES ",在开头和结尾都有一个空格。该文本搜索将仅匹配任何字段包含" JOHN YES "(包括那些空格)的文档。