1. MongoDB聚合框架与$group阶段概述
MongoDB的聚合框架是处理数据转换和计算的核心工具,而$group阶段则是其中最强大的操作符之一。作为一名长期使用MongoDB的开发者,我发现$group在实际项目中能解决80%以上的数据统计需求。
与SQL的GROUP BY相比,MongoDB的$group具有更灵活的表达方式。它不仅可以进行简单的分组统计,还能配合其他聚合阶段实现复杂的数据流水线处理。在电商订单分析、用户行为统计、物联网设备数据处理等场景中,$group都是不可或缺的工具。
重要提示:$group操作会消耗较多内存,当处理大型集合时建议配合$match阶段先过滤数据,或使用allowDiskUse选项避免内存溢出。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. $group基础语法与核心参数解析
2.1 基本语法结构
$group阶段的基本语法格式如下:
json复制{
$group: {
_id: <expression>, // 分组键定义
<field1>: { <accumulator1>: <expression1> },
<field2>: { <accumulator2>: <expression2> },
...
}
}
其中_id字段是必须的,它定义了文档分组的依据。这个表达式可以是:
- 单个字段名(如
$customerId) - 多个字段的组合(如
{ country: "$country", city: "$city" }) - 计算表达式(如
{ year: { $year: "$date" } })
2.2 常用累加器操作符
MongoDB提供了丰富的累加器操作符,以下是最常用的几种:
| 操作符 | 描述 | 示例 |
|---|---|---|
| $sum | 求和 | { total: { $sum: "$amount" } } |
| $avg | 平均值 | { avgScore: { $avg: "$score" } } |
| $max | 最大值 | { topScore: { $max: "$score" } } |
| $min | 最小值 | `{ lowSc |
