Mongodb: como agrupar e contar
Você pode usar a seguinte sintaxe para agrupar e contar no MongoDB:
db.collection.aggregate([ { $group : { _id : " $field_name ", count :{ $sum :1}}} ])
Observe que field_name é o campo pelo qual você deseja agrupar.
Os exemplos a seguir mostram como usar essa sintaxe com uma equipe de cobrança com os seguintes documentos:
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 })
Exemplo 1: agrupar e contar
Podemos usar o código a seguir para agrupar por campo “posição” e contar as ocorrências de cada posição.
db.teams.aggregate([ { $group : { _id : " $position ", count :{ $sum :1}}} ])
Isso retorna os seguintes resultados:
{ _id: ' Forward ', count: 1 } { _id: ' Guard ', count: 3 } { _id: ' Center ', count: 1 }
Isso nos diz:
- A posição “Avançar” aparece 1 vez.
- A posição “Guarda” aparece 3 vezes.
- A posição “Centro” aparece 1 vez.
Exemplo 2: agrupar e contar (depois classificar)
Podemos usar o código a seguir para contar as ocorrências de cada posição e classificar automaticamente os resultados em ordem crescente :
db.teams.aggregate([ { $group : { _id : " $position ", count :{ $sum :1}}}, { $sort : { count : 1}} ])
Isso retorna os seguintes resultados:
{ _id: ' Forward ', count: 1 } { _id: ' Center ', count: 1 } { _id: ' Guard ', count: 3 }
Podemos usar -1 no argumento count para classificar os resultados em ordem decrescente :
db.teams.aggregate([ { $group : { _id : " $position ", count :{ $sum :1}}}, { $sort : { count :-1}} ])
Isso retorna os seguintes resultados:
{ _id: ' Guard ', count: 3 } { _id: ' Forward ', count: 1 } { _id: ' Center ', count: 1 }
Nota : Você pode encontrar a documentação completa do $group aqui .
Recursos adicionais
Os tutoriais a seguir explicam como realizar outras operações comuns no MongoDB:
MongoDB: Como agrupar e somar
MongoDB: Como contar valores distintos em um campo
MongoDB: Como agrupar por vários campos