Du kan bruge nedenstående aggregering.
Gruppér efter både spørgsmål og svar for at få antallet af kombinationer efterfulgt af gruppe for spørgsmål for at få svaret og dets antal.
db.getCollection('testAggregate').aggregate([
{"$group":{
"_id":{"question":"$question","answer":"$answer"},
"count":{"$sum":1}
}},
{"$group":{
"_id":"$_id.question",
"answers":{"$push":{"answer":"$_id.answer","count":"$count"}}
}}
]);
Du kan bruge nedenstående kode til at få det format, du ønsker i 3.4.
Skift $group
taster ind i k og v efterfulgt af $addFields
med $arrayToObject
at transformere arrayet til navngivne nøgleværdipar.
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"}}}
]);