Mongodb: jak obliczyć średnią wartość pola


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

Metoda 1: Oblicz średnią pola

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

Metoda 2: Oblicz średnią pola na grupę

 db.collection.aggregate([{ $group : {_id: " $groupField ", avg_val:{$avg: " $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: Oblicz średnią pola

Do obliczenia średniej wartości pola punktowego możemy użyć następującego kodu:

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

To zapytanie zwraca następujące wyniki:

 { _id: null , avg_val: 26 }

Z wyników widzimy, że średnia wartość w polu punktów wynosi 26 .

Możemy ręcznie sprawdzić, czy jest to prawidłowe, ręcznie uśredniając wartości punktowe:

Średnia punktów: (30 + 30 + 20 + 25 + 25) / 5 = 26 .

Przykład 2: obliczenie średniej pola według grupy

Za pomocą poniższego kodu możemy obliczyć średnią wartość pola punktów , pogrupowaną według pola zespołu :

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

To zapytanie zwraca następujące wyniki:

 { _id: ' Spurs ', avg_val: 23.333333333333332 }
{ _id: ' Mavs ', avg_val: 30 }

Z wyników możemy zobaczyć:

  • Średnia wartość punktowa Spurs wynosi 23,33 .
  • Średnia wartość punktowa Mavs wynosi 30 .

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

Dodatkowe zasoby

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

MongoDB: Jak dodać nowe pole
MongoDB: Jak usunąć pole
MongoDB: Jak grupować i liczyć
MongoDB: Jak grupować według wielu pól

Dodaj komentarz

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