Du skal $unwind
arrayet "størrelser" og derefter $group
efter "item" og "sizes" og brug $sum
for at returnere optællingen.
db.collection.aggregate(
[
{ "$unwind": "$sizes" },
{ "$group": {
"_id": {
"item": "$item",
"sizes": "$sizes"
},
"count": { "$sum": 1 }
}}
]
)
som producerer:
{ "_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 }