У меня есть коллекция с документами с использованием схемы что-то вроде этого (некоторые члены отредактированный):MongoDB MapReduce - есть ли альтернатива Агрегации?
{
"_id" : ObjectId("539f41a95d1887b57ab78bea"),
"answers" : {
"ratings" : {
"positivity" : [
2,
3,
5
],
"activity" : [
4,
4,
3
],
},
"media" : [
ObjectId("537ea185df872bb71e4df270"),
ObjectId("537ea185df872bb71e4df275"),
ObjectId("537ea185df872bb71e4df272")
]
}
В этой схеме, первый, второй и третий рейтинги positivity
соответствуют первой, второй и третьи записи в массиве media
, соответственно. То же самое верно для оценок activity
. Мне нужно рассчитать статистику для оценок positivity
и activity
относительно связанных с ними объектов media
по всем документам коллекции. Прямо сейчас, я делаю это с MapReduce. Однако я хотел бы выполнить это с помощью Агрегационного трубопровода.
В идеале я хотел бы $unwind
в media
, answers.ratings.positivity
и answers.ratings.activity
массивов одновременно, так что я в конечном итоге, к примеру, следующие три документа, основанный на предыдущем примере:
[
{
"_id" : ObjectId("539f41a95d1887b57ab78bea"),
"answers" : {
"ratings" : {
"positivity" : 2,
"activity" : 4
}
},
"media" : ObjectId("537ea185df872bb71e4df270")
},
{
"_id" : ObjectId("539f41a95d1887b57ab78bea"),
"answers" : {
"ratings" : {
"positivity" : 3
"activity" : 4
}
},
"media" : ObjectId("537ea185df872bb71e4df275")
},
{
"_id" : ObjectId("539f41a95d1887b57ab78bea"),
"answers" : {
"ratings" : {
"positivity" : 5
"activity" : 3
}
},
"media" : ObjectId("537ea185df872bb71e4df272")
}
]
Есть каким-то образом добиться этого?