You need to enable JavaScript to run this app. MongoDB聚合:跨文档不同字段(Home/Away)的相同值分组统计
优惠活动
大模型
产品
解决方案
定价
更多

MongoDB聚合:跨文档不同字段(Home/Away)的相同值分组统计

问题核心逻辑偏差说明

此前尝试的$cond条件判断、$or逻辑作为分组键的方案,本质是单文档维度的单值选择:从每个文档的Home、Away两个字段中挑选一个值作为分组依据,无法同时把两个字段的取值都纳入统计范围,因此必然存在计数遗漏。
要实现跨字段同值统一聚合的需求,核心思路是先把分散在不同字段的取值拆分为独立的统计单元,再执行统一的分组计数,不需要在分组阶段嵌套复杂的条件判断逻辑。

可直接运行的聚合实现

按顺序在聚合管道中配置以下3个阶段,即可得到符合预期的统计结果:

  • 构造统一取值集合:通过$project把单文档的Home、Away值组装为数组,将两个独立字段的取值收敛到同一结构下
    {
      $project: {
        statValues: ["$Home", "$Away"]
      }
    }
    
  • 拆分统计单元:通过$unwind将上一步生成的数组拆分为独立文档,每个数组元素对应一条独立的待统计记录
    {
      $unwind: "$statValues"
    }
    
  • 分组计数:对拆分后的所有取值做统一分组,累计每个值的出现次数
    {
      $group: {
        _id: "$statValues",
        count: { $sum: 1 }
      }
    }
    
输出结果校验

上述管道的最终输出和需求预期完全匹配:

{"_id": "A", "count": 3},
{"_id": "B", "count": 3},
{"_id": "C", "count": 4}

实际使用时,如果存在Home或Away字段为空值的异常文档,可在$unwind阶段后新增$match规则,剔除空值、无效值的统计记录,避免计数偏差。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.03 17:27:04