首页 > 解决方案 > Mongodb全文搜索不适用于确切的“ANYTHING.com”短语

问题描述

我面临着 Mongodb 全文搜索的问题。我的集合中有 1M 数据有email字段。

我为多个字段创建了文本索引。当我使用查询时

db.user.find({"$and":[{"user_id":59856}],"$text":{"$search":"\"johnsmith@gmail.com\""}})

它需要超过25秒。但是当我删除.com喜欢

db.user.find({"$and":[{"user_id":59856}],"$text":{"$search":"\"johnsmith@gmail\""}})

最多需要 3-4 秒。我想知道为什么。

标签: mongodbfull-text-searchmongotemplate

解决方案


这很可能是因为点字符在正则表达式中被视为“匹配任何字符”。由于您似乎正在尝试进行完全匹配,因此您可以尝试转义它(以便它仅匹配点字符)

db.user.find({"$and":[{"user_id":59856}],"$text": 
{"$search":"\"johnsmith@gmail\.com\""}})

推荐阅读