首页 > 解决方案 > MongoDB 聚合,表格类型结果

问题描述

我有一个看起来像这样的文档模型

{
    _id: objectId,
    per: [{
        _pid: objectId,
        thing1: sting,
        thing2: string
    }],
    ore: [{
        _oid: objectId,
        thing1: sting,
        thing2: string
    }],
    tre: [{
        _tid: objectId,
        thing1: sting,
        thing2: string
    }]
}

我想撤回一个表格表示

[
    {_id,_pid,thing1,thing2},
    {_id,_pid,thing1,thing2},
    {_id,_oid,thing1,thing2},
    {_id,_oid,thing1,thing2},
    {_id,_oid,thing1,thing2},
    {_id,_tid,thing1,thing2}
]

我将如何去做 - 我确定这是一个聚合的事情

标签: mongodbaggregation-framework

解决方案


聚合中的$setUnion可以让您将多个数组合并为一个:

在MongoPlayground现场观看

db.collection.aggregate([
  { $group: {
     _id: "$_id",
     array: { $push: {
          $setUnion: [
            "$per",
            "$ore",
            "$tre"
          ]
        }
      }
    }
  }
]

从那时起,它只是根据您的喜好展开结果。

这是所有展开的完整示例:https ://mongoplayground.net/p/Z9-HHMoQOPA


推荐阅读