以下の集計を使用できます。
質問と回答の両方でグループ化して組み合わせのカウントを取得し、次に質問でグループ化して回答とそのカウントを取得します。
db.getCollection('testAggregate').aggregate([
{"$group":{
"_id":{"question":"$question","answer":"$answer"},
"count":{"$sum":1}
}},
{"$group":{
"_id":"$_id.question",
"answers":{"$push":{"answer":"$_id.answer","count":"$count"}}
}}
]);
以下のコードを使用して、3.4で必要な形式を取得できます。
$group
を変更します キーをkとvに入力し、続いて $addFields
$arrayToObject
配列を名前付きキーと値のペアに変換します。
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"}}}
]);