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

MongoDB聚合分组结果重构X/Y/Z统计值为指定数组结构问题

MongoDB聚合二次重构字段解决方案

你不需要使用$push,该运算符适用于多文档分组时收集值的场景,你当前是单条文档内部构造固定结构数组,直接在$group后追加$project阶段即可,写法如下:

// 你原有$group阶段代码保持不变
{
  $group: {
    _id: { level: "$level" },
    X: { $sum: "xxx" }, // 替换为你原有X的统计逻辑
    Y: { $sum: "xxx" }, // 替换为你原有Y的统计逻辑
    Z: { $sum: "xxx" }, // 替换为你原有Z的统计逻辑
    count: { $sum: 1 }
  }
},
// 新增$project阶段完成结构重构
{
  $project: {
    _id: 0,
    level: "$_id.level",
    range: [
      { dir: "X", count: "$X" },
      { dir: "Y", count: "$Y" },
      { dir: "Z", count: "$Z" }
    ]
  }
}

上述写法兼容MongoDB 3.2及以上版本,最终输出的文档结构完全符合要求:每个文档仅包含level字段和结构匹配的range数组。
如果需要兼容更老的MongoDB版本,可以替换为$concatArrays写法,逻辑和最终效果完全一致:

{
  $project: {
    _id: 0,
    level: "$_id.level",
    range: {
      $concatArrays: [
        [{ dir: "X", count: "$X" }],
        [{ dir: "Y", count: "$Y" }],
        [{ dir: "Z", count: "$Z" }]
      ]
    }
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 17:39:02