我正在try 查找所有不包含至少一个具有特定字段值的文档的文档.例如,以下是一个样本集合:
{ _id : 1,
docs : [
{ foo : 1,
bar : 2},
{ foo : 3,
bar : 3}
]
},
{ _id : 2,
docs : [
{ foo : 2,
bar : 2},
{ foo : 3,
bar : 3}
]
}
我想找到docs块中没有文档的每个记录,这些文档不包含至少一条foo=1的记录.在上面的示例中,只应返回第二个文档.
我try 了以下内容,但它只告诉我是否有不匹配的内容(返回文档1).
db.collection.find({"docs": { $not: {$elemMatch: {foo: 1 } } } })
UPDATE:.上面的查询确实有效.很多时候,我的数据是错误的,而不是我的代码.
我也看了$nin operator,但示例仅显示数组包含原语值列表时的情况,而不是其他文档.当我try 使用下面这样的内容时,它会查找确切的文档,而不仅仅是我想要的foo字段.
db.collection.find({"docs": { $nin: {'foo':1 } } })
到底有没有办法用基本运算符来实现这一点?