什麼是 MongoDB 聚合架構
MongoDB 聚合架構(Aggregation Framework)是一個計算架構,它可以:
作用在一個或幾個集合上;
對集合中的資料進行的一系列運算;
将這些資料轉化為期望的形式;
從效果而言,聚合架構相當于 SQL 查詢中的:
GROUP BY
LEFT OUTER JOIN
AS等
管道(Pipeline)和步驟(Stage)
整個聚合運算過程稱為管道(Pipeline),它是由多個步驟(Stage)組成的,每個管道:
接受一系列文檔(原始資料);
每個步驟對這些文檔進行一系列運算;
結果文檔輸出給下一個步驟;

聚合運算的基本格式
常見步驟
步驟
作用
SQL等價運算符
$match
過濾
WHERE
$project
投影
AS
$sort
排序
ORDER BY
$group
分組
<code>$skip/$limit</code>
結果限制
SKIP/LIMIT
$lookup
左外連接配接
常見步驟中的運算符
<code>$eq/$gt/$gte/$lt/$lte</code>
選擇需要的或排除不需要的字段
<code>$sum/$avg</code>
<code>$and/$or/$not/$in</code>
<code>$map/$reduce/$filter</code>
<code>$push/$addToSet</code>
<code>$geoWithin/$intersect</code>
<code>$range</code>
<code>$first/$last/$max/$min</code>
<code>$multiply/$divide/$substract/$add</code>
<code>$year/$month/$dayOfMonth/$hour/$minute/$second</code>
$unwind
展開數組
N/A
$graphLookup
圖搜尋
聚合運算的使用場景
聚合查詢可以用于OLAP和OLTP場景。例如:
OLTP
OLAP
計算
分析一段時間内的銷售總額、均值
計算一段時間内的淨利潤
分析購買人的年齡分布
分析學生成績分布
統計員工績效
MQL 常用步驟與 SQL 對比
MQL 特有步驟 $unwind
<code>$unwind</code>指定字段進行子文檔展開,其他字段不動
MQL 特有步驟 $bucket
<code>$bucket</code>指定字段按指定區間進行分組統計
MQL 特有步驟 $facet
<code>$facet</code>指定多個字段分别<code>$bucket</code>分組統計