Mongodb: jak grupować i liczyć
Do grupowania i zliczania w MongoDB możesz użyć następującej składni:
db.collection.aggregate([ { $group : { _id : " $field_name ", count :{ $sum :1}}} ])
Pamiętaj, że nazwa_pola to pole, według którego chcesz grupować.
Poniższe przykłady pokazują, jak używać tej składni w przypadku zespołu windykacyjnego z następującymi dokumentami:
db.teams.insertOne({team: " Mavs ", position: " Guard ", points: 31 }) db.teams.insertOne({team: " Spurs ", position: " Guard ", points: 22 }) db.teams.insertOne({team: " Rockets ", position: " Center ", points: 19 }) db.teams.insertOne({team: " Warriors ", position: " Forward ", points: 26 }) db.teams.insertOne({team: " Cavs ", position: " Guard ", points: 33 })
Przykład 1: grupuj według i licz
Możemy użyć poniższego kodu, aby pogrupować według pola „pozycja” i zliczyć wystąpienia każdej pozycji.
db.teams.aggregate([ { $group : { _id : " $position ", count :{ $sum :1}}} ])
Zwraca to następujące wyniki:
{ _id: ' Forward ', count: 1 } { _id: ' Guard ', count: 3 } { _id: ' Center ', count: 1 }
To nam mówi:
- Pozycja „Do przodu” pojawia się 1 raz.
- Pozycja „Strażnik” pojawia się 3 razy.
- Pozycja „Centrum” pojawia się 1 raz.
Przykład 2: grupuj według i licz (następnie sortuj)
Możemy użyć poniższego kodu, aby policzyć wystąpienia każdej pozycji i automatycznie posortować wyniki w kolejności rosnącej :
db.teams.aggregate([ { $group : { _id : " $position ", count :{ $sum :1}}}, { $sort : { count : 1}} ])
Zwraca to następujące wyniki:
{ _id: ' Forward ', count: 1 } { _id: ' Center ', count: 1 } { _id: ' Guard ', count: 3 }
Możemy użyć -1 w argumencie count, aby posortować wyniki w kolejności malejącej :
db.teams.aggregate([ { $group : { _id : " $position ", count :{ $sum :1}}}, { $sort : { count :-1}} ])
Zwraca to następujące wyniki:
{ _id: ' Guard ', count: 3 } { _id: ' Forward ', count: 1 } { _id: ' Center ', count: 1 }
Uwaga : Pełną dokumentację $group znajdziesz tutaj .
Dodatkowe zasoby
Poniższe samouczki wyjaśniają, jak wykonywać inne typowe operacje w MongoDB:
MongoDB: Jak grupować i sumować
MongoDB: Jak policzyć różne wartości w polu
MongoDB: Jak grupować według wielu pól