查找数组中所有元素都具有特定值的文档

时间:2014-10-15 21:36:03

标签: mongodb mongodb-query

这基本上是一个简单的问题,但我找不到它的查询功能。

示例集合:

{
  _id: 1,
  foo: [
    { bar: 9 },
    { bar: 16 }
  ]
}

{
  _id: 2,
  foo: [
    { bar: 9 },
    { bar: 9 },
    { bar: 9 }
  ]
}

示例输出:

{
  _id: 2,
  foo: [
    { bar: 9 },
    { bar: 9 },
    { bar: 9 }
  ]
}

因为这是每个foo.bar = 9的唯一文档。

我正在寻找的查询:

“查找所有文件WHERE foo.bar = 9对于本文档中的每个foo.bar。”

或者我是否需要“找不到所有文件(foo.bar!= 9)”之类的内容?

提前谢谢!

1 个答案:

答案 0 :(得分:3)

db.c.find({
    "foo.bar" : {
        $exists : true
    },
    "foo" : {
        $not : {
            $elemMatch : {
                "bar" : {
                    $ne : 9
                }
            }
        }
    }
});