You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用MongoDB聚合将分组结果动态合并为指定结构文档?

MongoDB聚合实现指定结构合并方案

你可以通过多阶段的$group配合$arrayToObject操作来动态完成这个合并,具体聚合管道如下:

db.collection.aggregate([
  // 按region和business分组,收集对应国家列表
  {
    $group: {
      _id: {
        region: "$region",
        business: "$business"
      },
      countries: { $addToSet: "$country" } // 如需保留重复国家,替换为$push
    }
  },
  // 按region分组,整理business数组结构
  {
    $group: {
      _id: "$_id.region",
      business: {
        $push: {
          $arrayToObject: [[{ k: "$_id.business", v: "$countries" }]]
        }
      }
    }
  },
  // 重命名字段,得到最终目标结构
  {
    $project: {
      _id: 0,
      region: "$_id",
      business: 1
    }
  }
])

各阶段说明:

  • 第一阶段$group:将相同region和business的记录合并,把对应的country值收集为数组。使用$addToSet可自动去重,若业务允许重复国家,换成$push即可。
  • 第二阶段$group:以region为维度再次合并,通过$arrayToObject将business名称和对应国家数组转换为{业务名称: [国家列表]}的对象,再用$push把这些对象存入business数组。
  • 第三阶段$project:将默认的_id字段重命名为region,并移除原_id,输出符合要求的结构。

内容的提问来源于stack exchange,提问作者m.y.m

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 14:43:25