【问题标题】:How to merge arrays from documents in aggregation?如何在聚合中合并文档中的数组?
【发布时间】:2021-08-07 02:29:00
【问题描述】:

假设有一个集合,其中每个文档都包含一个数组a

[
  {
    a: [ { x: 1 }, { y: 1 } ]
  },
  {
    a: [ { z: 1 } ]
  },
]

如何使用聚合来获取数组中包含的文档:

[
  { x: 1 }, { y: 1 }, { z: 1 }
]

我读了很多类似的问题,但我就是想不通这个。请注意,最外面的方括号表示管道结果数组,而不是文档中的数组。

【问题讨论】:

    标签: mongodb aggregation-framework


    【解决方案1】:

    像往常一样,只是提出问题已经有所帮助。 原来我想得太复杂了。

    很简单:

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

    https://mongoplayground.net/p/P2zHrbBlseu

    【讨论】:

      猜你喜欢
      • 2015-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-18
      • 2015-08-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多