rmdir.cn

db.collection.aggregate()

聚合管道查询

语法

db.collection.aggregate([<stage1>, <stage2>, ...])

说明

对集合执行聚合管道操作。通过多个阶段($match、$group、$sort、$project 等)组成的数据处理管道,实现复杂的数据分析和转换。

参数

  • $match

    过滤文档,类似 find() 的查询条件

  • $group

    分组聚合,配合 $sum、$avg、$max、$min 等累加器

  • $sort

    排序

  • $project

    字段投影、计算、重命名

  • $lookup

    左外连接另一个集合(类似 SQL JOIN)

  • $unwind

    将数组字段展开为多条文档

示例

分组统计

按 category 分组统计每个分类的文档数

db.products.aggregate([ { $group: { _id: "$category", count: { $sum: 1 } } }, { $sort: { count: -1 } } ])

关联查询

类似 SQL JOIN,将订单关联到用户信息

db.orders.aggregate([ { $lookup: { from: "users", localField: "userId", foreignField: "_id", as: "user" } }, { $unwind: "$user" } ])

数据转换

$match + $group + $sort 典型组合

db.sales.aggregate([ { $match: { year: 2024 } }, { $group: { _id: "$month", total: { $sum: "$amount" } } }, { $sort: { _id: 1 } } ])