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

如何在Python的MongoDB聚合中合并统计单字段多值分组文档数

合并MongoDB聚合管道实现分组统计

嗨,我来帮你把两个分开的聚合管道合并成一个更简洁高效的版本!你不需要分两次查询,直接在单个$group阶段里就能完成两种状态的统计。

完整聚合管道

[
  {
    "$group": {
      "_id": "$website",
      "edited_count": {
        "$sum": {
          "$cond": [{"$eq": ["$isEdited", "true"]}, 1, 0]
        }
      },
      "not_edited_count": {
        "$sum": {
          "$cond": [
            {"$or": [
              {"$eq": ["$isEdited", "false"]},
              {"$eq": ["$isEdited", null]}
            ]},
            1,
            0
          ]
        }
      }
    }
  }
]

关键逻辑解释

  • 无需提前$match筛选:我们直接在分组阶段对每个文档的isEdited字段进行判断,避免了两次遍历集合的额外开销。
  • $cond条件累加:
    • 对于edited_count:当isEdited等于"true"时,累加1,否则累加0。
    • 对于not_edited_count:判断isEdited是"false"或者字段不存在(对应MongoDB中的null),满足任一条件就累加1,否则累加0。

预期输出结果

运行这个管道后,你会得到符合需求的合并统计结果:

[
  {"_id": "website_1", "edited_count": 2, "not_edited_count": 0},
  {"_id": "website_2", "edited_count": 0, "not_edited_count": 1},
  {"_id": "website_3", "edited_count": 0, "not_edited_count": 1}
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 10:01:51