Du behöver två grupper i det här fallet. Den första gruppen genererar en ström av dokument med ett dokument per term och kategori:
{ $group : {
_id : {
category: "$category",
term: "$term",
},
total: { $sum : 1 }
}
}
En andra grupp kommer sedan att slå samman alla dokument med samma term till ett, med $push-operatorn för att slå samman kategorierna till en array:
{ $group : {
_id : "$_id.category",
terms: {
$push: {
term:"$_id.term",
total:"$total"
}
}
}
}