Рассмотрим этот набор документов:
[
{_id:1, values:[1, 2, 3]},
{_id:2, values:[4, 5, 6]}
]
Есть ли какой-нибудь элегантный способ группировки / суммирования массивов в новый массив, где n-й элемент - это сумма n-х элементов оригинальных документов?
{_id:null, values:[5, 7, 9]}
Я могу суммировать конкретные элементы на этапе агрегации:
{$group:{
_id:null,
Values0: {$sum:{$arrayElemAt:["$values",0]}},
Values1: {$sum:{$arrayElemAt:["$values",1]}},
Values2: {$sum:{$arrayElemAt:["$values",2]}}
}},
Но я не могу вернуть их обратно в массив.Также будет высоко цениться то, что потребует меньше печатать :).Если это не сработает, я могу перебрать документы bson в C # и построить ответ таким образом, но предпочел бы что-то в конвейере агрегации (или, может быть, mapreduce? Еще не рассматривал это)