我在MongoDB中有两个项目:
{'title':'active item',
'tags':[
{'tag':'active'},
{'tag':'anothertag'}
]}
{'title':'completed item',
'tags':[
{'tag':'completed'}
]}
它可以查找标记为已完成的项目:
db.items.find({'tags.tag':'completed'})
RESULT: [<completed item>]
现在,我想选择所有未标记为已完成的项目,因此我尝试:
db.items.find({$not:{'tags.tag':'completed'}})
DESIRED RESULT: [<active item>]
ACTUAL RESULT: []
但这不返回任何结果。显然我误解了Mongo中的$ not,但是为什么呢?如何查询以查找标签中不包含给定值的记录?
$not
运算符的目标必须是运算符表达式,而不是字段/值对象。
因此,parvin的答案是执行此操作的最简单方法,但是出于学习目的,您可以$not
使用$not
受支持的表达式来执行此操作,例如:
db.items.find({tags: {$not: {$elemMatch: {tag: 'completed'}}}})
db.items.find({'tags.tag': {$not: /completed/}})
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句