Vous devez $unwind
le tableau "tailles" puis $group
par "item" et "tailles" et utilisez le $sum
pour retourner le décompte.
db.collection.aggregate(
[
{ "$unwind": "$sizes" },
{ "$group": {
"_id": {
"item": "$item",
"sizes": "$sizes"
},
"count": { "$sum": 1 }
}}
]
)
qui produit :
{ "_id" : { "item" : "EFG", "sizes" : "S" }, "count" : 1 }
{ "_id" : { "item" : "ABC", "sizes" : "L" }, "count" : 1 }
{ "_id" : { "item" : "ABC", "sizes" : "M" }, "count" : 2 }
{ "_id" : { "item" : "ABC", "sizes" : "S" }, "count" : 1 }