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

MongoDB聚合管道按组ID分组统计各状态总数无法获取正确结果

问题根因

你当前使用的$facet会对全量输入数据集执行多个独立的聚合子管道,因此你定义的passed/warnings/errors/total四个子管道统计的都是全表汇总值,和后续拆分出的JITM002分组没有关联,最终每个分组拿到的自然都是全表统计结果。

修正后的聚合管道

直接在$group阶段完成分组内的多维度统计即可,无需使用$facet:

[
  {
    "$group": {
      "_id": "$JITM002",
      "passed": {
        "$sum": { "$cond": [{ "$eq": ["$JITM025", 1] }, 1, 0] }
      },
      "warnings": {
        "$sum": { "$cond": [{ "$eq": ["$JITM025", 2] }, 1, 0] }
      },
      "errors": {
        "$sum": { "$cond": [{ "$eq": ["$JITM025", 3] }, 1, 0] }
      },
      "total": {
        "$sum": { "$cond": [{ "$gt": ["$JITM025", 0] }, 1, 0] }
      }
    }
  },
  {
    "$sort": { "_id": 1 }
  },
  {
    "$project": {
      "_id": 0,
      "id": "$_id",
      "passed": 1,
      "warnings": 1,
      "errors": 1,
      "total": 1
    }
  }
]

逻辑说明

  1. $group阶段:按JITM002字段分组,通过$cond条件判断匹配每行记录的状态值,匹配成功则累加1,直接统计出每个分组内各状态的数量和总记录数
  2. $sort阶段:按分组ID升序排序,符合你原来的排序需求
  3. $project阶段:调整输出字段格式,隐藏默认的_id字段,将分组ID映射为id字段输出

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 11:39:03