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

MongoDB中如何按类别统计不同分组的数量?

解决MongoDB按Category统计不同Group数量的问题

原始数据集

Category: A, Group: 1
Category: A, Group: 1
Category: A, Group: 2
Category: A, Group: 3
Category: B, Group: 5
Category: B, Group: 5

期望结果

Category A: 3 
Category B: 1

解决方案

你需要通过两次分组实现统计不同Group的数量,具体聚合管道如下:

db.collection.aggregate([
  // 第一步:按Category+Group组合分组,去重重复的Group记录
  {
    $group: {
      _id: {
        category: "$Category",
        group: "$Group"
      }
    }
  },
  // 第二步:按Category分组,统计去重后的Group数量
  {
    $group: {
      _id: "$_id.category",
      distinctGroupCount: { $sum: 1 }
    }
  },
  // 可选:格式化输出为你期望的字符串格式
  {
    $project: {
      _id: 0,
      result: { $concat: ["Category ", "$_id", ": ", { $toString: "$distinctGroupCount" }] }
    }
  }
])

步骤说明

  1. 第一次分组:将Category和Group作为联合主键分组,同一个Category下的重复Group会被合并成单条记录,完成去重。
  2. 第二次分组:以Category为分组键,统计每个分组下的记录数,这个数值就是该Category下不同Group的数量。
  3. 可选格式化:通过$project阶段将结果转换成你期望的字符串格式,若不需要格式化,可直接省略该阶段,得到包含_id(对应Category)和distinctGroupCount的结构化文档。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 17:13:11