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);
Number of documents with a final grade less than 80: 2
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 |
|---|---|
| O tipo de agrupamento de idiomas a ser usado ao classificar os resultados. Consulte a seção Agrupamento desta página para obter mais informações. |
| O índice a ser usado para procurar documentos a serem contados. |
| O número máximo de documentos para contar. |
| A quantidade máxima de tempo que a consulta 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 |
|---|---|---|
| Especifica a locale Componentes internacionais para Unicode (ICU). Para obter uma lista de localidades suportadas, consulte Localidades de Agrupamento e Parâmetros Padrão no Manual do MongoDB Server . |
|
| (Opcional) Especifica se incluir comparação de caso. |
|
| (Opcional) Especifica a ordem de classificação das diferenças de caso durante as comparações de nível terciário. |
|
| (Opcional) Especifica o nível de comparação a ser executado, conforme definido na documentação da ICU. |
|
| (Opcional) Especifica se o driver compara strings numéricas como números. |
|
| (Opcional) Especifica se o driver considera o espaço em branco e a pontuação como caracteres básicos para fins de comparação. |
|
| (Opcional) Especifica quais caracteres o driver considera ignoráveis quando o |
|
| (Opcional) Especifica se o driver normaliza o texto conforme necessário. |
|
| (Opcional) Especifica se as strings contendo diacríticos são classificadas 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 consulta 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);
Estimated number of documents in the students collection: 6
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);
Number of documents with a final grade more than 80: 4
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: