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

标签 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 的文档。

我正在寻找的查询:

“查找本文档中每个 foo.bar 且 foo.bar = 9 的所有文档。”

或者我是否需要类似“查找所有不存在的文档(foo.bar!= 9)”?

提前谢谢您!

最佳答案

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

关于mongodb - 查找数组中所有元素都具有特定值的文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26392534/

相关文章:

node.js - postman 请求不加载 Node

mongodb - mongodb 中数组元素的搜索查询

Mongodb在创建新用户时出错

node.js - Mongoose 过滤后提取第一个子数组元素

c# - 如何检查与mongodb的连接

javascript - 为客户取消 'One week trial' 的最佳惯例?

mongodb - 如何解决 MongoDB 3.6 和 4.2 之间的 featureCompatibilityVersion 问题?

node.js - Mongodb全文搜索,获取文档中匹配的字符串

mongodb - MongoDB shell 是否有 findById 快捷方式?

regex - 整数值的 MongoDB 正则表达式搜索