No MongoDB o
$count
O operador de agregação passa um documento para o próximo estágio no pipeline de agregação que contém uma contagem do número de documentos inseridos no estágio atual. Exemplo
Suponha que tenhamos uma coleção chamada
pets
com os seguintes documentos:{ "_id" : 1, "name" : "Wag", "type" : "Dog", "weight" : 20 } { "_id" : 2, "name" : "Bark", "type" : "Dog", "weight" : 10 } { "_id" : 3, "name" : "Meow", "type" : "Cat", "weight" : 7 } { "_id" : 4, "name" : "Scratch", "type" : "Cat", "weight" : 8 } { "_id" : 5, "name" : "Bruce", "type" : "Bat", "weight" : 3 } { "_id" : 6, "name" : "Fetch", "type" : "Dog", "weight" : 17 } { "_id" : 7, "name" : "Jake", "type" : "Dog", "weight" : 30 }
Podemos usar a seguinte operação de agregação para contar o número de cães na coleção:
db.pets.aggregate([
{
$match: { type: "Dog" }
},
{
$count: "DogCount"
}
])
Resultado:
{ "DogCount" : 4 }
A maneira como o pipeline de agregação funciona é que ele consiste em estágios. Cada estágio do pipeline fornece a entrada para o próximo estágio.
Portanto, no exemplo acima, o primeiro estágio filtrava a coleção apenas para aqueles documentos que tinham um
type
de dog
. A segunda etapa pegou esses documentos, contou-os e passou o resultado para a próxima etapa. Dado que era o último estágio do pipeline, vimos a saída. Contando documentos agrupados
Aqui está um exemplo que combina o operador agregado $group com $count para retornar uma contagem de cada tipo de animal de estimação com um determinado peso.
db.pets.aggregate([
{
$match: { weight: { $lt: 30 } }
},
{
$group: { _id: "$type", count: { $sum: 1 } }
}
])
Resultado:
{ "_id" : "Cat", "count" : 2 }
{ "_id" : "Bat", "count" : 1 }
{ "_id" : "Dog", "count" : 3 }
Adicionar um estágio de pipeline
Neste exemplo, adicionamos um estágio de pipeline para classificar os resultados. Em particular, usamos o
$sort
operador para fazer isso. db.pets.aggregate([
{
$match: { weight: { $lt: 30 } }
},
{
$group: { _id: "$type", count: { $sum: 1 } }
},
{
$sort : { count : -1, _id: 1 }
}
])
Resultado:
{ "_id" : "Dog", "count" : 3 }
{ "_id" : "Cat", "count" : 2 }
{ "_id" : "Bat", "count" : 1 }
Nesse caso, classificamos pela contagem em ordem decrescente (o
-1
especifica ordem decrescente), então por _id
em ordem crescente (o 1
especifica a ordem crescente). Mais informações
Consulte a documentação do MongoDB para obter mais informações.