Contagem de documentos
Nesta página
Visão geral
Neste guia, você pode aprender como usar o driver C++ para recuperar uma contagem precisa e estimada do número de documentos em uma coleção. O método count_documents()
retorna o número exato de documentos que correspondem a um filtro de query ou que existem em uma collection e o método estimated_document_count()
retorna o número estimado de documentos em uma collection.
Dados de amostra
Os exemplos neste guia utilizam a coleção do companies
no banco de dados de dados do sample_training
a partir dos conjuntos de dados de amostra do Atlas. Para acessar essa coleção a partir do seu aplicação C++ , instancie um mongocxx::client
que se conecte a um Atlas cluster e atribua os seguintes valores às suas variáveis db
e collection
:
auto db = client["sample_training"]; auto collection = db["companies"];
Para saber como criar um cluster MongoDB Atlas gratuito e carregar os conjuntos de dados de amostra, consulte o guia Iniciar com Atlas .
Recuperar uma contagem precisa
Use o método count_documents()
para contar o número de documentos que estão em uma coleção. Para contar o número de documentos que correspondem a um critério de pesquisa específico, passe um documento de filtro de query para o método count_documents()
.
Para saber mais sobre como especificar uma query, consulte o guia Especificar uma query .
Contagem de todos os documentos
Para retornar uma contagem de todos os documentos na collection, passe um documento filtro vazio para o método count_documents()
, conforme mostrado no exemplo a seguir:
auto result = collection.count_documents({}); std::cout << "Number of documents: " << result << std::endl;
Number of documents: 9500
Contagem de documentos específicos
Para retornar uma contagem de documentos que correspondam a critérios de pesquisa específicos, passe seu documento de filtro de query para o método count_documents()
.
O exemplo a seguir conta o número de documentos que têm 2010
founded_year
de :
auto result = collection.count_documents(make_document(kvp("founded_year", 2010))); std::cout << "Number of companies founded in 2010: " << result << std::endl;
Number of companies founded in 2010: 33
Personalizar comportamento de contagem
Você pode modificar o comportamento do método count_documents()
passando uma instância da classe mongocxx::options::count
como parâmetro. A tabela seguinte descreve os campos que você pode definir em uma instância do mongocxx::options::count
:
Campo | Descrição |
---|---|
collation | The collation to use for the operation. Type: bsoncxx::document::view_or_value |
hint | The index to use for the operation. Type: mongocxx::hint |
comment | The comment to attach to the operation. Type: bsoncxx::types::bson_value::view_or_value |
limit | The maximum number of documents to count. This value must be a positive integer. Type: std::int64_t |
max_time | The maximum amount of time in milliseconds that the operation can run. Type: std::chrono::milliseconds |
skip | The number of documents to skip before counting documents. Type: std::int64_t |
read_preference | The read preference to use for the operation. Type: mongocxx::read_preference |
O exemplo a seguir usa o método count_documents()
para contar o número de documentos nos quais o campo number_of_employees
tem o valor 50
e instrui a operação a contar um máximo de 100
resultados:
mongocxx::options::count opts; opts.limit(100); auto result = collection.count_documents(make_document(kvp("number_of_employees", 50)), opts); std::cout << "Number of companies with 50 employees: " << result << std::endl;
Number of companies with 50 employees: 100
Recuperar uma contagem estimada
Você pode recuperar uma estimativa do número de documentos em uma coleção ligando para o método estimated_document_count()
. O método estima a quantidade de documentos com base nos metadados da collection, o que pode ser mais rápido do que realizar uma contagem precisa.
O exemplo a seguir estima o número de documentos em uma coleção:
auto result = collection.estimated_document_count(); std::cout << "Estimated number of documents: " << result << std::endl;
Estimated number of documents: 9500
Personalizar comportamento de contagem estimada
Você pode modificar o comportamento do método estimated_document_count()
passando uma instância da classe mongocxx::options::estimated_document_count
como parâmetro. A tabela seguinte descreve os campos que você pode definir em uma instância do mongocxx::options::estimated_document_count
:
Campo | Descrição |
---|---|
max_time | The maximum amount of time in milliseconds that the operation can run. Type: std::chrono::milliseconds |
comment | The comment to attach to the operation. Type: bsoncxx::types::bson_value::view_or_value |
read_preference | The read preference to use for the operation. Type: mongocxx::read_preference |
O exemplo a seguir usa o método estimated_document_count()
para retornar uma estimativa do número de documentos na coleção e instrui a operação a ser executada por no máximo 1000
milissegundos:
mongocxx::options::estimated_document_count opts; opts.max_time(std::chrono::milliseconds{1000}); auto result = collection.estimated_document_count(opts); std::cout << "Estimated number of documents: " << result << std::endl;
Estimated number of documents: 9500
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: