首页/数据/NoSQL 速查/聚合 $group 分组统计
MongoDB99 条

聚合 $group 分组统计

$group 按键分组并用累加器计算:_id 定义分组键,$sum/$avg/$min/$max/$push/$addToSet/$first/$last 产出指标。

NoSQL 速查数据更新于 2026-10-12
语法{ $group: { _id: <表达式>, field: { <累加器>: <表达式> } } }
分组键单字段 "$sku" / 复合对象 { sku: "$sku", day: "$day" } / null 表示全集合一组
累加器$sum / $avg / $min / $max / $push / $addToSet / $first / $last / $count

按 SKU 统计

按 SKU 统计
db.orders.aggregate([
  { $group: { _id: "$sku", totalQty: { $sum: "$qty" }, avgQty: { $avg: "$qty" }, tags: { $addToSet: "$status" } } }
])
$push 会把全部值进数组,超大分组可能导致 16MB 文档上限失败,改用 $addToSet 或先聚合。

易错点

  • $group 默认不支持超过 100MB 内存,大分组要 allowDiskUse: true

数据来源与参考

  • MongoDB Manual: $group
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌