聚合管道
聚合管道用于统计、分组、转换数据。
可以理解成一条数据处理流水线:
MongoDB 使用 aggregate 执行聚合。
一、最简单的聚合
统计已发布文章数量:
结果:
二、常见阶段
三、按状态分组统计
结果类似:
_id 是分组字段。
$sum: 1 表示每条文档加 1。
四、统计每个作者的文章数
这里按嵌套字段 author.id 分组。
五、只输出部分字段
$project 可以:
- 保留字段。
- 排除字段。
- 重命名字段。
- 计算新字段。
六、$lookup 关联查询
如果 posts 里只保存 authorId:
可以用 $lookup 关联 users:
author 会是一个数组。
如果只想取第一个作者,可以继续使用 $unwind:
七、聚合使用建议
- 能先
$match就先$match,减少后续处理的数据量。 - 聚合里用到的过滤字段也要考虑索引。
- 不要把所有业务逻辑都塞进超复杂聚合。
- 报表统计适合聚合,普通详情接口不一定需要聚合。
聚合很强大,但也要保持可读性。

