Menu Docs
Página inicial do Docs
/
Manual do banco de dados
/ / /

$count (agregação)

$count

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).

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

$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 ..

O tipo de retorno é representado pelo menor tipo que pode armazenar o valor final da contagem: integerlongdouble

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() que envolve o estágio de agregação $group com uma expressão $sum.

Crie uma collection chamada scores com estes documentos:

db.scores.insertMany( [
{ "_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:

  1. O estágio $match exclui documentos que têm um valor score menor ou igual a 80 para passar os documentos com score maior que 80 para o próximo estágio.

  2. O estágio $count retorna uma contagem dos documentos restantes no pipeline de agregação e atribui o valor a um campo chamado passing_scores.

db.scores.aggregate( [
{ $match: { score: { $gt: 80 } } },
{ $count: "passing_scores" }
] )

A operação retorna este resultado:

{ "passing_scores" : 4 }

Se o conjunto de dados de entrada estiver vazio, $count não retornará um resultado. O exemplo a seguir não retorna um resultado porque não há documentos com pontuações superiores a 99:

db.scores.aggregate( [
{ $match: { score: { $gt: 99 } } },
{ $count: "high_scores" }
] )

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; }
[BsonElement("lastupdated")]
public DateTime LastUpdated { get; set; }
}

Observação

Pacote de Convenções para Caso Pascal

As classes C# nesta página usam maiúsculas e minúsculas Pascal para seus nomes de propriedade , mas os nomes de campo na coleção MongoDB usam camel case. Para contabilizar esta diferença, você pode utilizar o seguinte código para registrar um ConventionPack quando seu aplicação 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();

Voltar

$collStats

Nesta página