繁体   English   中英

MongoDB 查询特定 object 的嵌套数组

[英]MongoDB query for nested array of specific object

我是 mongodb 的新用户,这就是我问这个问题的原因。 我有一份文件,在这份文件中,我在一个 _id 下有 3 个对象。

当我过滤{ "people.age": { $in: [24] } }时,我正在获取完整的文档。 但我只想看到匹配的 object。比如 24 岁,我只想看到 object 2,而不是 object 0 和 1。

是否可以只显示匹配的 object? 如果你好心解释我这将对我有所帮助。

在此处输入图像描述

使用$进行投影。

查询 1

db.collection.find({
  "people.age": {
    $in: [
      24
    ]
  }
},
{
  "people.$": 1
})

示例 Mongo 游乐场(查询 1)

如果您只是按特定年龄搜索人,您也可以使用以下查询:

查询 2

db.collection.find({
  "people.age": 24
},
{
  "people.$": 1
})

示例 Mongo 游乐场(查询 2)

注意: $将只返回数组的第一个元素。


您可以将聚合查询查找为:

  1. $match - 按age过滤文档。
  2. $project - 装饰 output 个文档。 使用$filter运算符过滤people数组中的文档。
db.collection.aggregate([
  {
    $match: {
      "people.age": 24
    }
  },
  {
    $project: {
      "people": {
        $filter: {
          input: "$people",
          cond: {
            $eq: [
              "$$this.age",
              24
            ]
          }
        }
      }
    }
  }
])

示例 Mongo 游乐场(聚合管道)


参考

返回数组中的项目特定数组元素

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM