MongoDB $project 将文档嵌入到根级别,并在另一个文档中包含其他字段

标签 mongodb aggregate

我有这个结构

 {
        "_id": "5e7229c248797243544a15b6",
        "itinerary": [
            {
                "_id": "5e96f905c694d020bc99c2e4"
            },
            {
                "_id": "5e7230360bab9640f82a0e79"
            }
        ]
    },

并且需要这样转换文档

    { "_id": "5e7229c248797243544a15b6"},
    { "_id": "5e96f905c694d020bc99c2e4"},
    { "_id": "5e7230360bab9640f82a0e79"}

感谢您团队的帮助。 :)

最佳答案

试试这个:

db.collection.aggregate([
  {
    $project: {
      data: {
        $concatArrays: [
          [
            { _id: "$_id" }
          ],
          {
            $map: {
              input: "$itinerary",
              in: "$$this"
            }
          }
        ]
      }
    }
  },
  {
    $unwind: "$data"
  },
  {
    $replaceRoot: {
      newRoot: "$data"
    }
  }
])

MongoPlayground

关于MongoDB $project 将文档嵌入到根级别,并在另一个文档中包含其他字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61307937/

相关文章:

java - 我们可以使用java中的_id更新mongodb中的文档吗?

apache-spark - Spark 数据帧中模式(最常见元素)的聚合

transactions - 使用 JOliver EventStore 更新多个聚合

用于查找最新数据的 mongodb 聚合

mongodb - 如何使用聚合 MongoDB 进行 SELECT DISTINCT

Mongodb find 查询与 $near 和坐标不起作用

node.js - MongoDB 在查询后导致 Express 崩溃

java - MongoDB : how to get all elements that contain an array using Java Driver?

c# - Linq TakeWhile 取决于元素的总和(或聚合)

mongodb - 如何获取相邻记录的记录