Definição
$countPassa 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 sintaxe:
{ $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 $group $project equivalente à seguinte sequência e:
db.collection.aggregate( [ { $group: { _id: null, myCount: { $sum: 1 } } }, { $project: { _id: 0 } } ] )
myCount é o campo de saída que armazena a contagem. Você pode especificar outro nome para o campo de saída.
Se o conjunto de dados de entrada estiver vazio, $count não retornará um resultado.
Dica
db.collection.countDocuments() encapsula o estágio de agregação $group com uma expressão $sum.
Exemplos
Os exemplos nesta página usam dados do conjunto de dados de amostra sample_mflix. Para obter detalhes sobre como carregar esse conjunto de dados em sua implantação autogerenciada do MongoDB , consulte Carregar o conjunto de dados de amostra. Se você fez modificações nos bancos de dados de amostra, talvez seja necessário descartar e recriar os bancos de dados para executar os exemplos nesta página.
A seguinte operação de agregação tem duas etapas:
O estágio
$matchfiltra documentos em quemetacriticé igual a100para passar apenas esses documentos para o próximo estágio.O estágio
$countretorna uma contagem dos documentos restantes no pipeline de agregação e atribui o valor a um campo chamadoperfect_score_count.
db.movies.aggregate( [ { $match: { metacritic: { $eq: 100 } } }, { $count: "perfect_score_count" } ] )
[ { perfect_score_count: 8 } ]
Os exemplos de C# nesta página utilizam o banco de dados sample_mflix a partir dos conjuntos de dados de amostra do Atlas. Para saber como criar um cluster MongoDB Atlas gratuito e carregar os conjuntos de dados de exemplo, consulte Introdução na documentação do driver MongoDB .NET/C#.
A seguinte classe Movie modela os documentos na collection sample_mflix.movies:
[] public class Movie { [] public ObjectId Id { get; set; } [] public string Title { get; set; } = null!; [] public int? Runtime { get; set; } [] public string? Rated { get; set; } [] public int Metacritic { get; set; } }
Para usar o driver MongoDB .NET/C# para adicionar um estágio $count a um pipeline de agregação, chame o método Count() em um objeto PipelineDefinition.
O exemplo a seguir cria um estágio de pipeline que retorna uma contagem de todos os documentos na coleção movies em que o campo metacritic tem o valor 100:
var pipeline = new EmptyPipelineDefinition<Movie>() .Match(Builders<Movie>.Filter.Eq(m => m.Metacritic, 100)) .Count();
Os exemplos do Node.js nesta página utilizam o banco de dados do sample_mflix a partir dos conjuntos de dados de amostra do Atlas. Para saber como criar um cluster gratuito do MongoDB Atlas e carregar os conjuntos de dados de exemplo, consulte Introdução na documentação do driver do MongoDB Node.js
Para usar o driver Node.js do MongoDB para adicionar um estágio $count a um pipeline de agregação , use o operador $count em um objeto de pipeline.
O exemplo a seguir cria um estágio de pipeline que conta o número de documentos de entrada da coleção sample_mflix.movies e retorna um documento contendo a contagem. Em seguida, o exemplo executa o agregação pipeline:
const pipeline = [{ $count: "movies" }]; const cursor = collection.aggregate(pipeline); return cursor;