Мне нужно преобразовать этот документ, используя структуру агрегации
{
title: 'Sample title',
options: [
{ text: "yes", id: 0 },
{ text: "no", id: 1 }
],
votes: [
{ option_id: 1, user_id: 1 },
{ option_id: 1, user_id: 2 },
{ option_id: 1, user_id: 3 }
]
}
В этот объект
{
title: 'Sample title',
result: [{ _id: 1, text: 'no', votes: 3}, { _id: 0, text: 'yes', votes: 0 }]
}
Что я пробовал:
[
{ $match: { _id: poll_id } },
{ $unwind: '$votes' },
{
$replaceRoot: {
newRoot: { $mergeObjects: ['$votes', '$$ROOT'] }
}
},
{
$group: {
_id: '$option_id',
title: { $first: '$title' },
votes: { $sum: 1 }
}
}
]
Который производит этот результат:
[{ _id: 1, title: 'Sample Title', votes: 3}]
Если опция не имеет голосов, она исключается из окончательного результата. Я не знаю, как включить текст опции тоже. Я уже прочитал ссылку на mongodb, но ничего не смог найти.