Anda dapat menggunakan agregasi di bawah ini.
Kelompokkan berdasarkan pertanyaan dan jawaban untuk mendapatkan hitungan kombinasi diikuti oleh kelompok demi pertanyaan untuk mendapatkan jawaban dan hitungannya.
db.getCollection('testAggregate').aggregate([
{"$group":{
"_id":{"question":"$question","answer":"$answer"},
"count":{"$sum":1}
}},
{"$group":{
"_id":"$_id.question",
"answers":{"$push":{"answer":"$_id.answer","count":"$count"}}
}}
]);
Anda dapat menggunakan kode di bawah ini untuk mendapatkan format yang Anda inginkan di 3.4.
Ubah $group
kunci ke k dan v diikuti oleh $addFields
dengan $arrayToObject
untuk mengubah array menjadi pasangan nilai kunci bernama.
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"}}}
]);