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 .
  • Загальна кількість очок для Мавс становить 70 .

Примітка . Ви можете знайти повну документацію для функції $sum тут .

Додаткові ресурси

У наступних посібниках пояснюється, як виконувати інші типові операції в MongoDB:

Як обчислити середнє значення в MongoDB
Як розрахувати середнє значення в MongoDB
Як розрахувати максимальне значення в MongoDB

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *