Vous pouvez utiliser l'agrégation ci-dessous.
Regroupez par question et par réponse pour obtenir le nombre de combinaisons, puis groupez par question pour obtenir la réponse et son nombre.
db.getCollection('testAggregate').aggregate([
{"$group":{
"_id":{"question":"$question","answer":"$answer"},
"count":{"$sum":1}
}},
{"$group":{
"_id":"$_id.question",
"answers":{"$push":{"answer":"$_id.answer","count":"$count"}}
}}
]);
Vous pouvez utiliser le code ci-dessous pour obtenir le format que vous voulez dans 3.4.
Changer $group
clés dans k et v suivi de $addFields
avec $arrayToObject
pour transformer le tableau en paires clé-valeur nommées.
db.getCollection('testAggregate').aggregate([
{"$group":{
"_id":{"question":"$question","answer":"$answer"},
"count":{"$sum":1}
}},
{"$group":{
"_id":"$_id.question",
"answers":{"$push":{"k":"$_id.answer","v":"$count"}}
}},
{"$addFields":{"answers":{"$arrayToObject":"$answers"}}}
]);