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 } }
])