Вы можете использовать следующие методы для вычисления суммы значений в поле в MongoDB:
Метод 1: вычислить сумму поля
db.collection.aggregate([{ $group : {_id: null , sum_val:{$sum:" $valueField "}}}])
Метод 2: вычислить сумму полей по группам
db.collection.aggregate([{ $group : {_id:" $groupField", sum_val:{$sum:" $valueField "}}}])
В следующих примерах показано, как использовать каждый метод с набором команд со следующими документами:
db.teams.insertOne({team: " Mavs", points: 30, rebounds: 8})
db.teams.insertOne({team: " Mavs", points: 30, rebounds: 12})
db.teams.insertOne({team: " Spurs", points: 20, rebounds: 7})
db.teams.insertOne({team: " Spurs", points: 25, rebounds: 5})
db.teams.insertOne({team: " Spurs", points: 25, rebounds: 9})
Пример 1: вычислить сумму поля
Мы можем использовать следующий код для вычисления суммы значений в поле точек :
db.teams.aggregate([{ $group : {_id: null , sum_val:{$sum:" $points "}}}])
Этот запрос возвращает следующие результаты:
{ _id: null , sum_val: 130}
Из результатов мы видим, что сумма значений в поле точек равна 130 .
Мы можем вручную проверить это правильно, рассчитав сумму значений точек вручную:
Сумма очков: 30 + 30 + 20 + 25 + 25 = 130 .
Пример 2. Вычисление суммы полей по группам
Мы можем использовать следующий код для вычисления суммы значений в поле очков , сгруппированных по полю команды :
db.teams.aggregate([{ $group : {_id:" $team", sum_val:{$sum:" $points "}}}])
Этот запрос возвращает следующие результаты:
{ _id: ' Spurs', sum_val: 60 }
{ _id: ' Mavs', sum_val: 70 }
По результатам мы видим:
- Сумма очков «Шпор» — 60 .
- Сумма очков для Mavs составляет 70 .
Примечание.Полную документацию по функции $sum можно найти здесь .
Дополнительные ресурсы
В следующих руководствах объясняется, как выполнять другие распространенные операции в MongoDB:
Как рассчитать медианное значение в MongoDB
Как рассчитать среднее значение в MongoDB
Как рассчитать максимальное значение в MongoDB