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

MongoDB聚合分组中子集合计数:按品牌统计车辆特征总数

按品牌分组统计features总数的MongoDB实现

嘿,作为MongoDB新手碰到这种分组统计需求很正常,我来给你一步步讲清楚怎么实现!

你的需求核心是:按make字段分组,累加每个品牌下所有车辆的features数组的元素总数。用MongoDB的聚合框架就能轻松搞定,核心是结合$group、$sum和$size这几个操作符。

基础实现代码

db.cars.aggregate([
  {
    $group: {
      _id: "$make", // 按品牌字段分组
      totalFeatures: { 
        $sum: { $size: "$features" } // 累加每个文档的features数组长度
      }
    }
  }
])

代码解释:

  • $group:聚合的核心阶段,指定用make字段作为分组依据(_id: "$make")。
  • $size: "$features":计算单条文档中features数组的元素个数,空数组的话结果就是0。
  • $sum:把同一品牌下所有文档的features长度加起来,得到该品牌的总features数。

优化输出格式(可选)

如果你觉得结果里的_id字段不够直观,可以加一个$project阶段,把_id重命名为make,同时隐藏原_id:

db.cars.aggregate([
  {
    $group: {
      _id: "$make",
      totalFeatures: { $sum: { $size: "$features" } }
    }
  },
  {
    $project: {
      _id: 0, // 隐藏默认的_id字段
      make: "$_id", // 将原_id的值赋值给新的make字段
      totalFeatures: 1 // 保留totalFeatures字段
    }
  }
])

适配你的金融应用场景

你提到这是类比场景,实际在金融应用里遇到类似问题——比如按用户分组统计交易记录数、按产品类别统计附加条款总数等,这个逻辑完全可以复用:只需要把make换成你的分组字段,features换成对应的数组字段就行,核心都是按指定字段分组 + 累加数组长度。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:58:19