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

如何使用MongoDB Aggregation对同key对象分组并输出指定结构

解决方案

你只需要在现有$group阶段之后再加两个聚合阶段即可,完整的聚合管道如下:

[
  // 原有分组统计逻辑
  {
    $group: {
      _id: { key: "$data.key", value: "$data.value" },
      count: { $sum: 1 },
    }
  },
  // 二次分组按key归集统计结果
  {
    $group: {
      _id: "$_id.key",
      result: {
        $push: {
          value: "$_id.value",
          count: "$count"
        }
      }
    }
  },
  // 调整输出字段格式
  {
    $project: {
      _id: 0,
      key: "$_id",
      result: 1
    }
  }
]

逻辑说明

  • 第一阶段和你原有逻辑一致,先按data.key+data.value组合分组,统计每个组合的出现次数
  • 第二阶段以第一阶段输出的_id.key为分组维度,将同一个key下所有value对应的统计结果通过$push操作归集到result数组中
  • 第三阶段通过$project调整最终输出结构,隐藏默认生成的_id字段,将分组维度值映射为key字段,保留result字段即可

如果需要和示例期望的输出顺序一致(value按count降序排列),可以在第一阶段之后新增排序阶段:

{ $sort: { count: -1 } }

内容的提问来源于stack exchange,提问作者extradeck

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 23:45:03