天天看點

MongoDB 聚合查詢

什麼是 MongoDB 聚合架構

MongoDB 聚合架構(Aggregation Framework)是一個計算架構,它可以:

作用在一個或幾個集合上;

對集合中的資料進行的一系列運算;

将這些資料轉化為期望的形式;

從效果而言,聚合架構相當于 SQL 查詢中的:

GROUP BY

LEFT OUTER JOIN

AS等

管道(Pipeline)和步驟(Stage)

整個聚合運算過程稱為管道(Pipeline),它是由多個步驟(Stage)組成的,每個管道:

接受一系列文檔(原始資料);

每個步驟對這些文檔進行一系列運算;

結果文檔輸出給下一個步驟;

MongoDB 聚合查詢

聚合運算的基本格式

常見步驟

步驟

作用

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>指定字段按指定區間進行分組統計

MongoDB 聚合查詢

MQL 特有步驟 $facet

<code>$facet</code>指定多個字段分别<code>$bucket</code>分組統計

MongoDB 聚合查詢