MongoDB如何查询特定字段不包含指定文本的所有文档?
解决Mongoose查询name不含指定字符的问题
你写的查询语法有误,$not的使用方式不对。要查询name字段不包含字符'm'的文档,有两种正确写法:
方法一:使用否定正则表达式
直接在$regex中定义匹配不包含'm'的规则,还可添加$options: 'i'实现大小写不敏感匹配(不需要的话可以省略):
Collection.find({ name: { $regex: /^[^m]*$/, $options: 'i' } })
说明:^[^m]*$表示从字符串开头到结尾的所有字符都不是'm',加上$options: 'i'后,会同时排除包含'M'的文档。
方法二:用$not包裹$regex
将$regex嵌套在$not内部,直接排除所有匹配指定正则的文档:
Collection.find({ name: { $not: { $regex: 'm', $options: 'i' } } })
这种写法逻辑更直观,直接表示筛选出所有name里不包含'm'(或'M')的文档。
以上两种写法都会返回你文档数组中的john、joy、tom、eli,自动排除martin。
内容的提问来源于stack exchange,提问作者Pouria
相关产品推荐
相关产品推荐

