聚合框架
1. 是一个计算框架
管道(Pipeline)和步骤(Stage)
1. 管道和步骤
- 整个聚合运算的过程称为管道,它是由多个步骤组成的
- 每个管道:
- 接受一系列文档(原始数据)
- 每个步骤对这些文档进行一系列运算
- 结果文档输出给下一个步骤

2. 聚合运算的基本格式
pipeline = [$stage1(JSON格式), $stage2, ..., $stageN];db.collection.aggregate(pipline,{options})
3. 常见步骤
4. 常见步骤里的运算符
5. 一些不常用的步骤
聚合运算的使用场景
1. OLAP和OLTP场景
2. MQL常用步骤与SQL对比
案例1:

案例2:

MQL特有步骤$unwind,用于展开数组

MQL特有步骤$bucket,用于分组。电商、产品统计场景十分合适

- MQL特有步骤$facet,将bucket组合起来。适合多维度指标的统计

- 一个案例:查看2019年第一季度已完成订单订单总金额和订单总数
db.getCollection('orders').aggregate([// 步骤1:匹配条件{$match: {status: "completed",orderDate: {$gte: ISODate("2019-01-01"),$lt: ISODate("2019-04-01")}}},// 步骤2:聚合订单总金额、运费、总数量{$group: {_id: null,total: {$sum: "$total"},shippingFee: {$sum: "$shippingFee"},count: {$sum: 1}}},// 步骤3:计算总金额{$project: {grandTotal: {$add: ["$total", "$shippingFee"]},count: 1,_id: 0}}])// 结果// {"count": ..., "grandTotal": ...(如:NumberDecimal("3243243424.33"))}
