首页 > 解决方案 > Mongodb - 如何只返回数组中的项目?

问题描述

数据结构的格式:

[
  {
    "related": [
      {
        "_id": "xxvxcv",
        "price": "5266",
        "title": "Title 1"
      },
      {
        "_id": "fggfd",
        "price": "5266",
        "title": "Title 2"
      }
    ]
  }
]

现在,我只想Objrelated数组中返回。

我想删除related密钥并仅返回其中存在的项目。

预期输出应该是这样的:

[ 
    {
        "_id": "xxvxcv",
        "price": "5266",
        "title": "Title 1"
      },
      {
        "_id": "fggfd",
        "price": "5266",
        "title": "Title 2"
    }
]

我的聚合应该是什么?任何建议

db.collection.aggregate([  ..??  ])

标签: arraysmongodbaggregation-framework

解决方案


$unwind:从输入文档中解构一个数组字段,为每个元素输出一个文档。

$replaceRoot:用指定的文档替换输入文档。

db.collection.aggregate([
  {
    $unwind: "$related"
  },
  {
    $replaceRoot: {
      newRoot: "$related"
    }
  }
])

输出

[
  {
    "_id": "xxvxcv",
    "price": "5266",
    "title": "Title 1"
  },
  {
    "_id": "fggfd",
    "price": "5266",
    "title": "Title 2"
  }
]

示例 Mongo Playground


推荐阅读