$count (agregação)
Definição
$count
Novidade na versão 3.4.
Passa um documento para a próxima etapa que contém uma contagem do número de documentos inseridos na etapa.
Observação
Desambiguação
Esta página descreve a fase do pipeline de agregação
$count
. Para o acumulador de agregação$count
, consulte$count (aggregation accumulator)
.
Compatibilidade
Você pode utilizar o $count
para implantações hospedadas nos seguintes ambientes:
MongoDB Atlas: o serviço totalmente gerenciado para implantações do MongoDB na nuvem
MongoDB Enterprise: a versão autogerenciada e baseada em assinatura do MongoDB
MongoDB Community: uma versão com código disponível, de uso gratuito e autogerenciada do MongoDB
Sintaxe
$count
tem a seguinte forma de protótipo:
{ $count: <string> }
<string>
é o nome do campo de saída que tem a contagem como seu valor. <string>
deve ser uma string não vazia, não deve começar com $
e não deve conter o caractere .
.
Comportamento
O estágio $count
é equivalente à seguinte sequência $group
+ $project
:
db.collection.aggregate( [ { $group: { _id: null, myCount: { $sum: 1 } } }, { $project: { _id: 0 } } ] )
onde myCount
seria o campo de saída que contém a contagem. Você pode especificar outro nome para o campo de saída.
Dica
Veja também:
db.collection.countDocuments()
que envolve o estágio de agregação $group
com uma expressão $sum
.
Exemplo
Uma coleção chamada scores
possui os seguintes documentos:
{ "_id" : 1, "subject" : "History", "score" : 88 } { "_id" : 2, "subject" : "History", "score" : 92 } { "_id" : 3, "subject" : "History", "score" : 97 } { "_id" : 4, "subject" : "History", "score" : 71 } { "_id" : 5, "subject" : "History", "score" : 79 } { "_id" : 6, "subject" : "History", "score" : 83 }
A seguinte operação de agregação tem duas etapas:
O estágio
$match
exclui documentos que têm um valorscore
menor ou igual a80
para passar os documentos comscore
maior que80
para o próximo estágio.O estágio
$count
retorna uma contagem dos documentos restantes no pipeline de agregação e atribui o valor a um campo chamadopassing_scores
.
db.scores.aggregate( [ { $match: { score: { $gt: 80 } } }, { $count: "passing_scores" } ] )
A operação retorna os seguintes resultados:
{ "passing_scores" : 4 }