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