Můžete použít níže uvedenou agregaci.
Seskupte podle otázky a odpovědi, abyste získali počet kombinací, a poté seskupte po otázce, abyste získali odpověď a její počet.
db.getCollection('testAggregate').aggregate([
{"$group":{
"_id":{"question":"$question","answer":"$answer"},
"count":{"$sum":1}
}},
{"$group":{
"_id":"$_id.question",
"answers":{"$push":{"answer":"$_id.answer","count":"$count"}}
}}
]);
Níže uvedený kód můžete použít k získání požadovaného formátu v 3.4.
Změňte $group
klíče do kav následované $addFields
s $arrayToObject
transformovat pole na pojmenované páry klíč-hodnota.
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"}}}
]);