Обновление: Поскольку значение Total
не является фиксированным, обновленный ответ с вопросом:
/** Using 'facet' as we need docs to be returned in result
* (Can also be done without 'facet' by pushing all docs into an array in '$group' but it may not work for large datasets) */
db.collection.aggregate([
{
$facet: {
data: [ { $match: {} } ], /** Get all docs without any filter */
total: [
{
$group: { /** Group all docs & sum-up 'result' field */
_id: "",
Total: { $sum: "$response" }
}
}
]
}
},
{
$unwind: "$data"
},
{
$unwind: "$total"
},
/** Merge 'total' field into 'data' & make data field as new root for documents */
{
$replaceRoot: { newRoot: { $mergeObjects: [ "$total", "$data" ] } }
}
])
Тест: MongoDB- Детская площадка
Old: Если Total
одинаковое значение для всех документов.
Если для всех документов в результате агрегирования необходимо добавить одинаковое значение, просто используйте этап агрегирования $ addFields :
{ $addFields : { Total :5 } }