Вам нужно $unwind
перед вами $group
:
db.collection.aggregate([
{ "$unwind": "$votes_by_gender" },
{ "$group": {
"_id": "$_id.question",
"options": {
"$push": {
"option": "$_id.option",
"votes_by_gender": "$votes_by_gender"
}
}
}}
])
Что бы вывести как:
{
"_id" : "Voluptatem perferendis voluptas ex.",
"options" : [
{
"option" : "Vero rerum qui animi quia assumenda.",
"votes_by_gender" : {
"user_gender" : "F",
"total_votes" : 1
}
},
{
"option" : "Vero rerum qui animi quia assumenda.",
"votes_by_gender" : {
"user_gender" : "M",
"total_votes" : 2
}
},
{
"option" : "Suscipit iste molestias est est porro et atque.",
"votes_by_gender" : {
"user_gender" : "M",
"total_votes" : 2
}
}
]
}
Конечно, если вы просто хотите свести «вопрос» только вместе, не перегруппировывая содержимое массива, то вы просто $group
db.collection.aggregate([
{ "$group": {
"_id": "$_id.question",
"options": {
"$push": {
"option": "$_id.option",
"votes_by_gender": "$votes_by_gender"
}
}
}}
])
, который будет выводить как:
{
"_id" : "Voluptatem perferendis voluptas ex.",
"options" : [
{
"option" : "Vero rerum qui animi quia assumenda.",
"votes_by_gender" : [
{
"user_gender" : "F",
"total_votes" : 1
},
{
"user_gender" : "M",
"total_votes" : 2
}
]
},
{
"option" : "Suscipit iste molestias est est porro et atque.",
"votes_by_gender" : [
{
"user_gender" : "M",
"total_votes" : 2
}
]
}
]
}
Но это массивы внутри массивов, и в действительности это не рекомендуется, даже если вы думали, что хотите этого.