我的文档包含a
和b
字段(以及其他一些额外字段)。我有a
,b,
字段的值对列表,我希望匹配所有没有a
和b
字段的MongoDB文档作为给定列表中的任何一对字段。因此,如果MongoDB数据库中的文档是:
{a: 1, b: 2, c: 3}
{a: 4, b: 5, c: 6}
{a: 7, b: 8, c: 9}
{a: 1, b: 8, c: 10}
我的列表是[{a: 1, b: 2}, {a: 7, b: 8}]
,我想做一个只返回第二个和最后一个文档的查询。
我该怎么做?
答案 0 :(得分:2)
在查询中使用 $nor
运算符,该运算符对一个或多个查询表达式的数组执行逻辑NOR运算,并选择使数组中所有查询表达式失败的文档:
var arr = [{a: 1, b: 2}, {a: 7, b: 8}];
db.test.find({ "$nor": arr });
答案 1 :(得分:1)
以下将过滤具有任何已定义值的文档
db.delme.find({
$nor : [
{$nor: [{a :{$ne: 1}},{b: {$ne: 2}}]},
{$nor: [{a :{$ne: 7}},{b: {$ne: 8}}]}
]
})
以下将过滤具有已定义的配对值
的文档org.eclipse.ui.commands