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

MongoDB聚合查询实现:将success状态单独分组,其余状态合并统计

MongoDB聚合查询:拆分success与其他状态统计

针对你的需求,我们可以通过MongoDB的聚合管道实现,核心思路是先统一非success状态的标识,再按应用和状态分组求和。

完整聚合查询代码

db.yourCollectionName.aggregate([
  // 统一非success状态的标识为'failed'
  {
    $project: {
      app: 1,
      count: 1,
      status: {
        $cond: {
          if: { $eq: ["$status", "success"] },
          then: "$status",
          else: "failed"
        }
      }
    }
  },
  // 按app和处理后的status分组,累加count
  {
    $group: {
      _id: { app: "$app", status: "$status" },
      totalCount: { $sum: "$count" }
    }
  },
  // 整理成目标输出格式
  {
    $project: {
      _id: 0,
      app: "$_id.app",
      status: "$_id.status",
      count: "$totalCount"
    }
  },
  // 可选:按app和status排序,让结果更规整
  {
    $sort: { app: 1, status: 1 }
  }
])

各阶段说明

  • $project阶段:用$cond条件判断,将所有非"success"的状态统一替换为"failed",同时保留app和count字段。
  • $group阶段:以app和处理后的status作为分组依据,用$sum累加每组的count值。
  • $project阶段:重新调整输出结构,去掉自动生成的_id字段,把分组数据映射成你需要的格式。
  • $sort阶段:可选步骤,按app升序、status升序排列结果,方便查看。

注意事项

  • 替换代码里的yourCollectionName为你实际的集合名称。
  • 完全适配“每个应用不一定包含全部状态”的场景:如果某个app没有success状态,结果只会出现该app的failed组;如果只有success状态,只会出现success组。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 14:18:14