是否可以使用$elemMatch
来检索与空数组匹配的文档?
想象一下以下文件:
{ a: [] } (A)
{ a: [{ b: 1 }] } (B)
{ a: [{ b: 2 }]} } (C)
我想要一个查询,该查询使用$ elemMatch并查找a.b
不为1的所有文档。因为在(A)中a.b
不存在,因此应将其返回。
但是,对于查询
db.z.find({ a: { $elemMatch: {b: { $ne: 1 }} } })
仅返回(C)。我了解这种行为,因为它们不是a
数组中的元素,但是它们是否可以解决此行为,并且还返回(A)?还是另一个mongodb运算符具有此行为?
添加{ b: { $nin: [1, null] } }
或{ b: { $ne: 1, $exists: true } }
无效。
编辑:在$ elemMatch工作之前使用$ or,但我的问题是修改$ elemMatch,而不是在其之前添加运算符。