Overview
En esta guía, puede aprender a usar el controlador C++ para recuperar un recuento preciso y estimado de la cantidad de documentos en una colección. count_documents()
El método devuelve el número exacto de documentos que coinciden con un filtro de consulta o que existen en una colección, y el método estimated_document_count() devuelve el número estimado de documentos en una colección.
Datos de muestra
Los ejemplos de esta guía utilizan la colección companies en la base de datos sample_training de la Conjuntos de datos de muestra de Atlas. Para acceder a esta colección desde su aplicación C++, cree una mongocxx::client instancia de que se conecte a un clúster de Atlas y asigne los siguientes valores a las variables db collection y:
auto db = client["sample_training"]; auto collection = db["companies"];
Para aprender cómo crear un clúster gratuito de MongoDB Atlas y cargar los conjuntos de datos de muestra, consulte la guía de introducción a MongoDB.
Recupere un recuento preciso
Utilice el método count_documents() para contar el número de documentos de una colección. Para contar el número de documentos que coinciden con un criterio de búsqueda específico, pase un documento de filtro de consulta al método count_documents().
Para obtener más información sobre cómo especificar una consulta, consulte la Especifique una guía de consulta.
Contar todos los documentos
Para devolver un recuento de todos los documentos de la colección, pase un documento de filtro vacío al método count_documents(), como se muestra en el siguiente ejemplo:
auto result = collection.count_documents({}); std::cout << "Number of documents: " << result << std::endl;
Number of documents: 9500
Documentos específicos del recuento
Para devolver un recuento de documentos que coinciden con criterios de búsqueda específicos, pase el documento de filtro de consulta al método count_documents().
El siguiente ejemplo cuenta la cantidad de documentos que tienen un valor founded_year de 2010:
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 el comportamiento del conteo
Puede modificar el comportamiento del método count_documents() pasando una instancia de la clase mongocxx::options::count como parámetro. La siguiente tabla describe los campos que puede configurar en una instancia mongocxx::options::count:
Campo | Descripción |
|---|---|
| The collation to use for the operation. Type: bsoncxx::document::view_or_value |
| The index to use for the operation. Type: mongocxx::hint |
| The comment to attach to the operation. Type: bsoncxx::types::bson_value::view_or_value |
| The maximum number of documents to count. This value must be a positive integer. Type: std::int64_t |
| The maximum amount of time in milliseconds that the operation can run. Type: std::chrono::milliseconds |
| The number of documents to skip before counting documents. Type: std::int64_t |
| The read preference to use for the operation. Type: mongocxx::read_preference |
El siguiente ejemplo utiliza el método count_documents() para contar la cantidad de documentos en los que el campo number_of_employees tiene el valor 50 e indica a la operación que cuente un 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 un recuento estimado
Puede obtener una estimación del número de documentos de una colección llamando al método estimated_document_count(). Este método estima la cantidad de documentos basándose en los metadatos de la colección, lo que podría ser más rápido que realizar un recuento preciso.
El siguiente ejemplo estima el número de documentos en una colección:
auto result = collection.estimated_document_count(); std::cout << "Estimated number of documents: " << result << std::endl;
Estimated number of documents: 9500
Personalizar el comportamiento del recuento estimado
Puede modificar el comportamiento del método estimated_document_count() pasando una instancia de la clase mongocxx::options::estimated_document_count como parámetro. La siguiente tabla describe los campos que puede configurar en una instancia mongocxx::options::estimated_document_count:
Campo | Descripción |
|---|---|
| The maximum amount of time in milliseconds that the operation can run. Type: std::chrono::milliseconds |
| The comment to attach to the operation. Type: bsoncxx::types::bson_value::view_or_value |
| The read preference to use for the operation. Type: mongocxx::read_preference |
El siguiente ejemplo utiliza el método estimated_document_count() para devolver una estimación de la cantidad de documentos en la colección e indica que la operación se ejecute durante un máximo de 1000 milisegundos:
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
Documentación de la API
Para aprender más sobre cualquiera de los métodos o tipos analizados en esta guía, consulta la siguiente documentación de API: