在MongoDB中,聚合管道查詢是一種強大的數據處理工具,可以對數據進行各種復雜的操作和轉換。要使用聚合管道進行統計,你需要使用$group
階段來對數據進行分組,并使用$count
階段來計算每個分組的文檔數量。以下是一個簡單的示例:
假設我們有一個名為orders
的集合,其中包含以下文檔:
[
{ "_id": 1, "customer_id": 1, "amount": 100 },
{ "_id": 2, "customer_id": 1, "amount": 200 },
{ "_id": 3, "customer_id": 2, "amount": 150 },
{ "_id": 4, "customer_id": 2, "amount": 50 },
{ "_id": 5, "customer_id": 3, "amount": 300 }
]
現在,我們想要統計每個客戶的訂單總金額和訂單數量。我們可以使用以下聚合管道查詢:
db.orders.aggregate([
{
$group: {
_id: "$customer_id",
totalAmount: { $sum: "$amount" },
orderCount: { $sum: 1 }
}
}
])
這個查詢的工作原理如下:
$group
階段:根據customer_id
字段對文檔進行分組。totalAmount
:使用$sum
操作符計算每個分組中所有文檔的amount
字段之和。orderCount
:使用$sum
操作符計算每個分組中的文檔數量(相當于COUNT(*)
)。查詢結果將如下所示:
[
{ "_id": 1, "totalAmount": 300, "orderCount": 2 },
{ "_id": 2, "totalAmount": 200, "orderCount": 2 },
{ "_id": 3, "totalAmount": 300, "orderCount": 1 }
]
這樣,我們就成功地使用MongoDB聚合管道查詢統計了每個客戶的訂單總金額和訂單數量。