MongoDB文本搜索:如何查询排除含特定关键词的文档
解决MongoDB排除包含特定单词文档的查询需求
嗨,这事儿好办,我给你两种实用的查询写法,都能精准过滤掉包含"monday"的文档,完美匹配你的需求:
方法1:基础字符串匹配(不区分大小写)
如果只是想排除所有包含"monday"字符串的文档(不管是不是独立单词),可以用$not结合正则表达式:
db.yourCollectionName.find({ text: { $not: /monday/i } })
- 这里的
/monday/i是不区分大小写的正则,如果你需要严格区分大小写,去掉末尾的i即可 $not操作符会反转匹配条件,只返回不满足正则的文档
方法2:严格匹配独立单词
如果要确保排除的是独立的"monday"单词(比如避免误删包含"mondayyy"这类字符串的文档),可以加上单词边界\b:
db.yourCollectionName.find({ text: { $not: /\bmonday\b/i } })
\b代表单词边界,保证匹配的是完整的"monday"单词,而不是其他字符串的一部分
这两种写法都会帮你排除掉{ "text" : "cake sale monday" },返回你期望的所有文档:
{ "text" : "cake" }
{ "text" : "sale" }
{ "text" : "sale cake" }
{ "text" : "cake sale" }
{ "text" : "dress sale" }
内容的提问来源于stack exchange,提问作者user2264784
相关产品推荐
相关产品推荐

