You need to enable JavaScript to run this app. MongoDB如何按分类统计去重后的SKU总数量?
优惠活动
大模型
产品
解决方案
定价
更多

MongoDB如何按分类统计去重后的SKU总数量?

MongoDB按分类统计去重SKU数量解决方案

你提交的查询不符合预期的原因有两点:

  • 首次$group阶段将sku作为分组键的一部分,会为每个唯一的(category, sku)组合生成独立分组,你提供的测试数据中4条记录的sku均不重复,因此该阶段会输出4个分组。
  • 后续直接调用$count统计的是上一阶段所有分组的总条数,没有按category维度做聚合,自然得到总数量4的结果。

以下是两种符合你需求的实现方案:

方案1:使用$addToSet + $size实现(性能更优)

db.ecomm_sku_count.aggregate([
    // 按category分组,将同分类下所有sku存入自动去重的数组
    {
        $group: {
            _id: "$category",
            sku_set: { $addToSet: "$sku" }
        }
    },
    // 格式化输出为你要求的结构
    {
        $project: {
            _id: {
                category: "$_id",
                sku_count: { $size: "$sku_set" }
            }
        }
    }
])

方案2:二次分组实现(逻辑更直观)

db.ecomm_sku_count.aggregate([
    // 首次分组:按category+sku去重,确保同分类下相同sku只保留一条记录
    {
        $group: {
            _id: {
                category: "$category",
                sku: "$sku"
            }
        }
    },
    // 二次分组:按category统计去重后的sku总数,同时格式化输出结构
    {
        $group: {
            _id: {
                category: "$_id.category",
                sku_count: { $sum: 1 }
            }
        }
    }
])

两种方案的输出完全匹配你要求的格式:

[
  { "_id": { "category": "electronics", "sku_count": 3 } },
  { "_id": { "category": "apparels", "sku_count": 1 } }
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 21:15:07