MongoDB全文检索:实现‘Football+(Juventus|Milan)’查询的方法求助
MongoDB文本搜索筛选问题解决思路
你的查询失效是因为MongoDB的$text搜索不支持()和|这类正则风格的布尔表达式语法,它有自己的一套文本搜索规则,以下两种方法可以实现你要的「必须包含Football,同时包含Juventus或Milan」的筛选逻辑:
方法一:使用文本搜索内置语法
利用+强制必须包含指定短语,空格表示逻辑或关系,查询语句如下:
db.news.find({ $text: { $search: '+"Football" Juventus Milan' } })
+"Football":强制文档必须包含精确短语FootballJuventus和Milan:满足其中任意一个即可,两者为逻辑或关系
方法二:结合$or与$text做明确逻辑拆分
如果需要更直观的逻辑拆分,可以用$or组合两个独立的文本搜索条件:
db.news.find({ $or: [ { $text: { $search: '"Football" "Juventus"' } }, { $text: { $search: '"Football" "Milan"' } } ] })
这个写法会分别匹配同时包含Football和Juventus、以及同时包含Football和Milan的文档,最终合并结果。
内容的提问来源于stack exchange,提问作者M-A-X
相关产品推荐
相关产品推荐

