在MongoDB中,你可以使用聚合管道(aggregation pipeline)來進行復雜的數據處理和聚合操作。聚合管道是一系列的階段(stages),每個階段都會對輸入的數據進行某種操作,然后將結果傳遞給下一個階段。
以下是一些常見的聚合管道階段:
$match
:過濾數據,只輸出符合條件的文檔。$group
:根據指定的鍵值對文檔進行分組,并對每個組執行聚合操作(如求和、平均、最大、最小等)。$sort
:對數據進行排序。$project
:選擇需要的字段,排除不需要的字段。$unwind
:將數組字段拆分成多個文檔。$lookup
:從另一個集合中拉取文檔,并將它們添加到當前的文檔中。$limit
:限制輸出的文檔數量。$skip
:跳過指定數量的文檔。以下是一個簡單的示例,展示了如何使用聚合管道對一個名為orders
的集合進行數據聚合:
db.orders.aggregate([
{ $match: { status: "A" } }, // 過濾狀態為"A"的訂單
{ $group: { _id: "$cust_id", total: { $sum: "$amount" } } }, // 按客戶ID分組,并計算每個客戶的訂單總金額
{ $sort: { total: -1 } } // 按訂單總金額降序排序
])
這個示例中,$match
階段過濾出狀態為"A"的訂單,$group
階段按客戶ID分組并計算每個客戶的訂單總金額,$sort
階段按訂單總金額降序排序。最終的結果將是一個包含每個客戶ID和其對應訂單總金額的列表。