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 tipo de retorno é representado pelo menor tipo que pode armazenar o valor final da contagem: integer → long → double
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 utilizam 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 int Runtime { get; set; } public string Title { get; set; } public string Rated { get; set; } public List<string> Genres { get; set; } public string Plot { get; set; } public ImdbData Imdb { get; set; } public int Year { get; set; } public int Index { get; set; } public string[] Comments { get; set; } [] public DateTime LastUpdated { get; set; } }
Observação
ConventionPack para Pascal Case
As classes C# nesta página usam Pascal case para seus nomes de propriedade, mas os nomes de campo na coleção MongoDB usam Camel case. Para considerar essa diferença, você pode usar o seguinte código para registrar um ConventionPack quando o aplicativo iniciar:
var camelCaseConvention = new ConventionPack { new CamelCaseElementNameConvention() }; ConventionRegistry.Register("CamelCase", camelCaseConvention, type => true);
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 conta o número de documentos de entrada e retorna um documento com a contagem como seu valor:
var pipeline = new EmptyPipelineDefinition<Movie>() .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;