Overview
En esta guía, puedes aprender cómo usar el controlador de Rust para obtener un recuento preciso y estimado del número 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 usan la colección restaurants en la base de datos sample_restaurants de la Conjuntos de datos de muestra de Atlas. Para acceder a esta colección desde su aplicación Rust, cree un Client que se conecte a un clúster de Atlas y asigne los siguientes valores a su my_coll variable.
Selecciona el Asynchronous o la pestaña Synchronous para ver el código correspondiente para cada entorno de ejecución:
let uri = "<connection string>"; let client = Client::with_uri_str(uri).await?; let my_coll: Collection<Document> = client .database("sample_restaurants") .collection("restaurants");
let uri = "<connection string>"; let client = Client::with_uri_str(uri)?; let my_coll: Collection<Document> = client .database("sample_restaurants") .collection("restaurants");
Para aprender a crear un clúster gratuito de MongoDB Atlas y cargar los conjuntos de datos de muestra, consulta el Comienza con la guía de Rust Driver.
Los ejemplos en esta guía usan la siguiente estructura Restaurant como modelo para documentos en la colección restaurants:
struct Restaurant { name: String, cuisine: String, }
Recupera un recuento preciso
Utilice 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 consulta al método count_documents().
Para obtener más información sobre cómo especificar una consulta, consulte la guía Especificar una consulta.
Contar todos los documentos
Para obtener el 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. Seleccione la pestaña Asynchronous o Synchronous para ver el código correspondiente a cada entorno de ejecución:
let ct = my_coll.count_documents().await?; println!("Number of matching documents: {}", ct);
Number of documents: 25216
let ct = my_coll.count_documents().run()?; println!("Number of matching documents: {}", ct);
Number of documents: 25216
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 el número de documentos en los que el valor del campo name incluye la cadena "Sunset". Seleccione la pestaña Asynchronous o Synchronous para ver el código correspondiente para cada entorno de ejecución:
let ct = my_coll .count_documents(doc! { "name": doc! { "$regex": "Sunset" } }) .await?; println!("Number of matching documents: {}", ct);
Number of matching documents: 10
let ct = my_coll .count_documents(doc! { "name": doc! { "$regex": "Sunset" } }) .run()?; println!("Number of matching documents: {}", ct);
Number of matching documents: 10
Personalizar el comportamiento del conteo
Puedes modificar el comportamiento del método count_documents() encadenando métodos de opción a tu llamada count_documents() antes de la llamada al método await o run(). La siguiente tabla describe las opciones que puedes configurar para personalizar la operación de conteo:
Opción | Descripción |
|---|---|
| The collation to use for the operation. Type: Collation |
| The index to use for the operation. Type: Hint |
| The comment to attach to the operation. Type: Bson |
| The maximum number of documents to count. This value must be a positive integer. Type: u64 |
| The maximum amount of time in milliseconds that the operation can run. Type: Duration |
| The read concern to use for the operation. Type: ReadConcern |
| The number of documents to skip before counting documents. Type: u64 |
| The read preference and tags to use for the operation. Type: SelectionCriteria |
Recuperar un conteo estimado
Puedes obtener una estimación del número de documentos en una colección llamando al método estimated_document_count() antes de llamar al método await o run(). Este método estima la cantidad de documentos basándose en los metadatos de la colección, lo que puede ser más rápido que realizar un recuento exacto.
El siguiente ejemplo estima el número de documentos en una colección. Seleccione la pestaña Asynchronous o Synchronous para ver el código correspondiente a cada tiempo de ejecución:
let ct = my_coll.estimated_document_count().await?; println!("Number of documents: {}", ct);
Number of documents: 25216
let ct = my_coll.estimated_document_count().run()?; println!("Number of documents: {}", ct);
Number of documents: 25216
Personalizar el comportamiento del recuento estimado
Puedes modificar el comportamiento del método estimated_document_count() encadenando métodos de opción a tu llamada estimated_document_count(). La siguiente tabla describe las opciones que puedes configurar para personalizar la operación de conteo estimado:
Opción | Descripción |
|---|---|
| The maximum amount of time in milliseconds that the operation can run. Type: Duration |
| The comment to attach to the operation. Type: Bson |
| The read concern to use for the operation. Type: ReadConcern |
| The read preference and tags to use for the operation. Type: SelectionCriteria |
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: