Visão geral
Neste guia, você aprenderá a obter uma contagem do número de documentos em sua coleção.
Dados de amostra
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.
Contagem precisa
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.
Exemplo
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);
Modificar comportamento
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 |
|---|---|
| The type of language collation to use when sorting results. See the Collation section of this page for more information. |
| O índice a ser usado para procurar documentos a serem contados. |
| O número máximo de documentos a serem contados. |
| A quantidade máxima de tempo que a query pode executar no servidor. |
| O número de documentos a ignorar antes de contar. |
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);
Agrupamentos
Para configurar o agrupamento para sua operação, crie uma instância da classe Agrupamento.
A tabela seguinte descreve os parâmetros que o construtor do Collation aceita. Ela também lista a propriedade de classe correspondente que você pode usar para ler o valor de cada configuração.
Parâmetro | Descrição | Propriedade de classe |
|---|---|---|
| Specifies the International Components for Unicode (ICU) locale. For a list of supported locales, see Collation Locales and Default Parameters in the MongoDB Server Manual. |
|
| (Opcional) Especifica se a comparação de caso deve ser incluída. |
|
| (Optional) Specifies the sort order of case differences during tertiary level comparisons. |
|
| (Optional) Specifies the level of comparison to perform, as defined in the ICU documentation. |
|
| (Opcional) Especifica se o driver compara strings numéricas como números. |
|
| (Optional) Specifies whether the driver considers whitespace and punctuation as base characters for purposes of comparison. |
|
| (Optional) Specifies which characters the driver considers ignorable when the |
|
| (Optional) Specifies whether the driver normalizes text as needed. |
|
| (Opcional) Especifica se as strings que contêm diacríticos são ordenadas da parte de trás da string para a frente. |
|
Para obter mais informações sobre agrupamento, consulte a página Agrupamento no manual do MongoDB Server.
Contagem estimada
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.
Modificar comportamento
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 |
|---|---|
| A quantidade máxima de tempo que a query pode executar no servidor. |
Exemplo
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);
Agregação
Você pode utilizar o método de construtor Count() para contar o número de documentos em uma aggregation pipeline.
Exemplo
O exemplo a seguir executa as seguintes ações:
Especifica um estágio de correspondência para encontrar documentos com um valor
FinalGrademaior que80Conta 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);
Informações adicionais
Para saber mais sobre as operações mencionadas, consulte os seguintes guias:
Documentação da API
Para saber mais sobre qualquer um dos métodos ou tipos discutidos neste guia, consulte a seguinte documentação da API: