開始使用彙總管線
彙總管線是功能強大的工具,可讓開發人員在其集合上執行進階資料分析和操作。 管線是一連串的資料處理作業,會對輸入文件執行以產生計算輸出。 管線階段會處理輸入文件,並將結果傳遞至下一個階段。 每個階段都會對資料執行特定作業,例如篩選、分組、排序和轉換。
基本語法
彙總管線的基本語法如下:
db.collection.aggregate([ { stage1 }, { stage2 }, ... { stageN }])
其中 db.collection 是您想要執行彙總的 MongoDB 集合,而 stage1、stage2、...、stageN 是您想要套用的管線階段。
範例階段
Cosmos DB for MongoDB 擁有各種不同的階段,可供您在管線中使用,包括:
- $match:篩選文件,只傳遞符合指定條件的文件。
- $project:藉由新增、移除或更新欄位,將文件轉換成新的表單。
- $group:依一或多個欄位將文件分組,並對分組的資料執行各種彙總函式。
- $sort:根據指定的欄位排序文件。
- $skip:略過指定的文件數目。
- $limit:限制傳遞至下一個階段的文件數目。
- $unwind:從輸入文件解構陣列欄位,以輸出文件給每個元素。
若要檢視所有可用的階段,請參閱支援的功能
範例
以下是如何使用彙總管線對資料執行各種作業的一些範例:
篩選:若要篩選 "quantity" 欄位大於 20 的文件,您可以使用下列管線:
db.collection.aggregate([
{ $match: { quantity: { $gt: 20 } } }
])
分組:若要依 "category" 欄位將文件分組,並計算每個群組的 "quantity" 總計,您可以使用下列管線:
db.collection.aggregate([
{ $group: { _id: "$category", totalQuantity: { $sum: "$quantity" } } }
])
排序:若要依 "price" 欄位以遞減順序排序文件,您可以使用下列管線:
db.collection.aggregate([
{ $sort: { price: -1 } }
])
轉換:若要將新欄位 "discount" 新增至 "price" 大於 100 的文件,您可以使用下列管線:
db.collection.aggregate([
{ $project: { item: 1, price: 1, discount: { $cond: [{ $gt: ["$price", 100] }, 10, 0 ] } } }
])
回溯:若要將所有子文件與陣列欄位 'tags' 分開,並為每個值建立新的文件,您可以使用下列管線:
db.collection.aggregate([
{ $unwind: "$tags" }
])
具有多個階段的範例
db.sales.aggregate([
{ $match: { date: { $gte: "2021-01-01", $lt: "2021-03-01" } } },
{ $group: { _id: "$category", totalSales: { $sum: "$sales" } } },
{ $sort: { totalSales: -1 } },
{ $limit: 5 }
])
在此範例中,我們使用名為 "sales" 的範例集合,其中包含具有下列欄位的文件:"date"、"category" 和 "sales"。
第一個階段 { $match: { date: { $gte: "2021-01-01", $lt: "2021-03-01" } } } 會篩選文件,只傳遞日期介於 2021 年 1 月 1 日到 2021 年 2 月 28 日之間的文件。 我們使用格式為「YYYY-MM-DD」的字串日期格式。
第二個階段 { $group: { _id: "$category", totalSales: { $sum: "$sales" } } } 依 "category" 欄位來分組文件,並計算每個群組的總銷售額。
第三個階段 { $sort: { totalSales: -1 } } 會依遞減順序的 "totalSales" 欄位來排序文件。
第四個階段 { $limit: 5 } 會將傳遞至下一個階段的文件數目限制為只有前 5 個。
因此,管線會依指定日期範圍的總銷售額傳回前 5 個類別。
下一步
- 了解如何使用 Studio 3T 搭配 Azure Cosmos DB for MongoDB。
- 了解如何使用 Robo 3T 搭配 Azure Cosmos DB for MongoDB。
- 使用 Azure Cosmos DB for MongoDB 探索 MongoDB 範例。
- 正在嘗試為遷移至 Azure Cosmos DB 進行容量規劃嗎? 您可以使用現有資料庫叢集的相關資訊進行容量規劃。
- 如果您只知道現有資料庫叢集中的虛擬核心和伺服器數目,請參閱使用虛擬核心或 vCPU 來評估要求單位。
- 如果您知道目前資料庫工作負載的一般要求率,請參閱使用 Azure Cosmos DB 容量規劃工具來評估要求單位。