У меня есть список товаров в моей коллекции, например:
[
{
"name": "product1",
"categories": [
{
"category": "Food",
"subcategory": "Nuts"
},
{
"category": "Candies",
"subcategory": "Chocolate"
}
]
},
{
"name": "product2",
"categories": [
{
"category": "Food",
"subcategory": "Nuts"
},
{
"category": "Candies",
"subcategory": "Mint"
}
]
},
{
"name": "product3",
"categories": [
{
"category": "Food",
"subcategory": "Cakes"
},
{
"category": "Pastries",
"subcategory": "Chocolate"
}
]
}
]
Я хочу получить количество товаров, используя агрегат. Если я запускаю
db.collection.aggregate([{ $group: { _id: "$categories", count: { $sum: 1 }} }])
, я получаю это:
[
{
"_id": [{ "category": "Food", "subcategory": "Nuts" }, { "category": "Candies", "subcategory": "Chocolate" }],
"count": 1
},
{
"_id": [{ "category": "Food", "subcategory": "Nuts" }, { "category": "Candies", "subcategory": "Mint" }],
"count": 1
},
{
"_id": [{ "category": "Food", "subcategory": "Cakes" }, { "category": "Pastries", "subcategory": "Chocolate" }],
"count": 1
}
]
Но мне действительно нужно найти счетчик для каждой категории и подкатегории, например:
[
{ "_id": { "category": "Food", "subcategory": "Nuts" }, "count": 2 },
{ "_id": { "category": "Food", "subcategory": "Cakes" }, "count": 1 },
{ "_id": { "category": "Candies", "subcategory": "Chocolate" }, "count": 1 },
{ "_id": { "category": "Candies", "subcategory": "Mint" }, "count": 1 },
{ "_id": { "category": "Pastries", "subcategory": "Chocolate" }, "count": 1 }
]
Есть запрос для получения этого?