Overview
En esta guía, puedes aprender a usar el controlador Rust para recuperar un recuento preciso y estimado del número de documentos en una colección. La count_documents()
el método 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 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 tu aplicación Rust, crea un Client que se conecte a un clúster de Atlas y asigna los siguientes valores a tu variable my_coll.
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 Guía Cómo comenzar con el 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
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, pasa 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 recuento de todos los documentos en la colección, pasa un documento de filtro vacío al método count_documents() como se muestra en el siguiente ejemplo. Selecciona la pestaña Asynchronous o Synchronous para ver el código correspondiente para 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
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 en los que el valor del campo name incluye la string "Sunset". Selecciona la pestaña Asynchronous o Synchronous para ver el código correspondiente de cada runtime:
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 de recuento
Puedes modificar el comportamiento del método count_documents() encadenando métodos de opciones a tu llamada count_documents() antes de la llamada a los métodos await o run(). La siguiente tabla describe las opciones que se pueden 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 recuperar una estimación de la cantidad de documentos en una colección llamando al método estimated_document_count() antes de llamar al método await o run(). El método estima la cantidad de documentos en función de los metadatos de la colección, lo que puede ser más rápido que realizar un recuento preciso.
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 para 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
Personaliza el comportamiento de conteo estimado
Puedes modificar el comportamiento del método estimated_document_count() encadenando métodos de opciones a tu estimated_document_count() llamar. La siguiente tabla describe las opciones que puedes configurar para personalizar la operación de recuento 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: