我有 2 個集合,專案和類別,我試圖計算每個類別中有多少專案。
每個集合的外觀示例是
Item = [
{
name: "item1",
category: ObjectId("123")
},
{
name: "item2",
category: ObjectId("456")
}, ...]
Category = [
{
_id: ObjectId("123"),
name: "category1"
}, ...]
到目前為止,我可以使用類似這樣的東西來計算一個類別的專案
Item.countDocuments({'category': Category[0].id}).exec(function(err, result) {
console.log(result)
}
>> 1
我的問題是如何對所有類別執行此操作?如果有人可以幫助或指出我正確的方向,將不勝感激。
理想的輸出是這樣的:
{
"category1": 1,
"category2": 3
}
uj5u.com熱心網友回復:
您需要使用兩個聚合管道來實作您想要的結果。
Item.aggregate([
{
$group: {
_id: "$category", count: { $sum: 1}
}
}
])
結果_id將是用于分組欄位的 ID,該欄位將是類別 ID。
[
{
"_id": ObjectId(123),
"count": 1
},
{
"_id": ObjectId(456),
"count": 1
}
]
在https://www.mongodb.com/docs/manual/reference/operator/aggregation/count/了解有關計數聚合的更多資訊
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/481706.html
