Overview
En esta guía, aprenderá cómo utilizar el driver de C++ para recuperar un recuento exacto y estimado del número de documentos en una colección. El método count_documents() devuelve el número exacto de documentos que coinciden con un filtro de query 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 los conjuntos de datos de muestra de Atlas. Para acceder a esta colección desde tu aplicación en C++, instancia un mongocxx::client que se conecte a un clúster Atlas y asigna los siguientes valores a tus variables db y collection:
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 ejemplo, consulta la guía MongoDB Get Started.
Recupera un recuento preciso
Utiliza el método count_documents() para contar el número de documentos que hay en 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 query al método count_documents().
Para obtener más información sobre cómo especificar una query, consulta la guía Especificar una query.
Contar todos los documentos
Para devolver un conteo de todos los documentos en la colección, se debe pasar un documento de filtro vacío al método count_documents(), tal como se muestra en el siguiente ejemplo:
auto result = collection.count_documents({}); std::cout << "Number of documents: " << result << std::endl;
Number of documents: 9500
Contar documentos específicos
Para devolver un conteo de documentos que coincidan con criterios de búsqueda específicos, pasa tu documento de filtro de query al método count_documents().
El siguiente ejemplo cuenta el número de documentos que tienen un valor de 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 de recuento
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 puedes establecer en una instancia de mongocxx::options::count:
Campo | Descripción |
|---|---|
| La intercalación que se utilizará para la operación. |
| Índice a utilizar para la operación. |
| Comentario para adjuntar a la operación. |
| Número máximo de documentos a contabilizar. Este valor debe ser un número entero positivo. |
| Tiempo máximo en milisegundos que puede durar la operación. |
| Número de documentos que se deben omitir antes de contarlos. |
| Preferencia de lectura a utilizar para la operación. |
El siguiente ejemplo utiliza el método count_documents() para contar el número de documentos en los que el campo number_of_employees tiene el valor 50 e instruye a la operación a contar 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 conteo estimado
Puede recuperar una estimación de la cantidad de documentos en una colección llamando al método estimated_document_count(). El método estima la cantidad de documentos en función de los metadatos de la colección, lo que podría ser más rápido que realizar un recuento exacto.
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
Personaliza el comportamiento de conteo 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 puedes establecer en una instancia de mongocxx::options::estimated_document_count:
Campo | Descripción |
|---|---|
| Tiempo máximo en milisegundos que puede durar la operación. |
| Comentario para adjuntar a la operación. |
| Preferencia de lectura a utilizar para la operación. |
El siguiente ejemplo utiliza el método estimated_document_count() para devolver una estimación del número de documentos en la colección e instruye 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: