Menu Docs
Página inicial do Docs
/ / /
C#/.NET
/ / /

Contagem de documentos

Nesta página

  • Visão geral
  • Contagem precisa
  • Contagem estimada
  • Agregação
  • Informações adicionais

Neste guia, você pode aprender a obter uma contagem precisa e estimada do número de documentos em sua coleção.

Os exemplos deste guia usam os seguintes documentos em uma collection chamada students:

{ "_id": 1, "name": "Jonathon Howard ", "finalGrade": 87.5 }
{ "_id": 2, "name": "Keisha Freeman", "finalGrade": 12.3 }
{ "_id": 3, "name": "Wei Zhang", "finalGrade": 99.0 }
{ "_id": 4, "name": "Juan Gonzalez", "finalGrade": 85.5 }
{ "_id": 5, "name": "Erik Trout", "finalGrade": 72.3 }
{ "_id": 6, "name": "Demarcus Smith", "finalGrade": 88.8 }

A seguinte classe Student modela os documentos nesta coleção:

public class Student {
public int Id { get; set; }
public string Name { get; set; }
public double FinalGrade { get; set; }
}

Observação

Os documentos na coleção students usam a convenção de nomenclatura de camelo. Os exemplos neste guia usam um ConventionPack para desserializar os campos na coleção em maiúsculas e minúsculas Pascal e mapeá-los para as propriedades na classe Student .

Para saber mais sobre serialização personalizada, consulte Serialização personalizada.

Para contar o número de documentos que correspondem ao seu filtro de consulta, utilize o método CountDocuments(). Se você passar por um filtro de query vazio, esse método retornará o número total de documentos na coleção.

O exemplo a seguir conta o número de documentos em que o valor de finalGrade é menor que 80:

var filter = Builders<Student>.Filter.Lt(s => s.FinalGrade, 80.0);
var count = _myColl.CountDocuments(filter);
Console.WriteLine("Number of documents with a final grade less than 80: " + count);
Number of documents with a final grade less than 80: 2

Você pode modificar o comportamento do CountDocuments() passando um tipo de CountOptions como um parâmetro. Se você não especificar nenhuma opção, o driver usará valores padrão.

Você pode definir as seguintes propriedades em um objeto CountOptions:

Propriedade
Descrição
Collation
The type of language collation to use when sorting results.
Default: null
Hint
The index to use to scan for documents to count.
Default: null
Limit
The maximum number of documents to count.
Default: 0
MaxTime
The maximum amount of time that the query can run on the server.
Default: null
Skip
The number of documents to skip before counting.
Default: 0

Dica

Quando você usa CountDocuments() para retornar o número total de documentos em uma collection, o MongoDB executa uma varredura de collection. Você pode evitar uma varredura de collection e melhorar o desempenho desse método usando uma dica para aproveitar o índice incorporado no campo _id. Utilize esta técnica somente ao chamar CountDocuments() com um parâmetro de query vazio.

var filter = Builders<Student>.Filter.Empty;
CountOptions opts = new CountOptions(){Hint = "_id_"};
var count = collection.CountDocuments(filter, opts);

Para estimar o número total de documentos em sua coleção, use o método EstimatedDocumentCount().

Observação

O método EstimatedDocumentCount() é mais eficiente do que o método CountDocuments(), pois usa os metadados da collection em vez de fazer a varredura de toda a collection.

Você pode modificar o comportamento do EstimatedDocumentCount() passando um tipo de EstimatedDocumentCountOptions como um parâmetro. Se você não especificar nenhuma opção, o driver usará valores padrão.

Você pode definir as seguintes propriedades em um objeto EstimatedDocumentCountOptions:

Propriedade
Descrição
MaxTime
The maximum amount of time that the query can run on the server.
Default: null

O exemplo a seguir estima o número de documentos na coleção students:

var count = _myColl.EstimatedDocumentCount();
Console.WriteLine("Estimated number of documents in the students collection: " + count);
Estimated number of documents in the students collection: 6

Você pode utilizar o método de construtor Count() para contar o número de documentos em uma aggregation pipeline.

O exemplo a seguir executa as seguintes ações:

  • Especifica um estágio de correspondência para encontrar documentos com um valor FinalGrade maior que 80

  • Conta o número de documentos que correspondem aos critérios

var filter = Builders<Student>
.Filter.Gt(s => s.FinalGrade, 80);
var result = _myColl.Aggregate().Match(filter).Count();
Console.WriteLine("Number of documents with a final grade more than 80: " + result.First().Count);
Number of documents with a final grade more than 80: 4

Para saber mais sobre as operações mencionadas, consulte os seguintes guias:

Para saber mais sobre qualquer um dos métodos ou tipos discutidos neste guia, consulte a seguinte documentação da API:

Voltar

Retrieve Data