MongoDB: как вычислить сумму поля


Вы можете использовать следующие методы для вычисления суммы значений в поле в 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

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.