Mongodb: jak obliczyć sumę pola


Do obliczenia sumy wartości w polu w MongoDB możesz użyć następujących metod:

Metoda 1: Oblicz sumę pola

 db.collection.aggregate([{ $group : {_id: null , sum_val:{$sum: " $valueField "}}}])

Metoda 2: obliczenie sumy pól według grup

 db.collection.aggregate([{ $group : {_id: " $groupField ", sum_val:{$sum: " $valueField "}}}])

Poniższe przykłady pokazują, jak używać każdej metody w przypadku zespołu zbierającego z następującymi dokumentami:

 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})

Przykład 1: obliczenie sumy pola

Do obliczenia sumy wartości w polu punktów możemy użyć poniższego kodu:

 db.teams.aggregate([{ $group : {_id: null , sum_val:{$sum: " $points "}}}])

To zapytanie zwraca następujące wyniki:

 { _id: null , sum_val: 130}

Z wyników widzimy, że suma wartości w polu punktowym wynosi 130 .

Możemy ręcznie sprawdzić, czy jest to prawidłowe, ręcznie obliczając sumę wartości punktowych:

Suma punktów: 30 + 30 + 20 + 25 + 25 = 130 .

Przykład 2: obliczenie sumy pól według grup

Za pomocą poniższego kodu możemy obliczyć sumę wartości w polu punktów , pogrupowanych według pola zespołu :

 db.teams.aggregate([{ $group : {_id: " $team ", sum_val:{$sum: " $points "}}}])

To zapytanie zwraca następujące wyniki:

 { _id: ' Spurs ', sum_val: 60 }
{ _id: ' Mavs ', sum_val: 70 }

Z wyników możemy zobaczyć:

  • Łączna liczba punktów dla Spurs wynosi 60 .
  • Łączna liczba punktów dla Mavs wynosi 70 .

Uwaga : Pełną dokumentację funkcji $sum można znaleźć tutaj .

Dodatkowe zasoby

Poniższe samouczki wyjaśniają, jak wykonywać inne typowe operacje w MongoDB:

Jak obliczyć medianę w MongoDB
Jak obliczyć średnią wartość w MongoDB
Jak obliczyć maksymalną wartość w MongoDB

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *