Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

Contabilizar documentos

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.

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:

#[derive(Serialize, Deserialize, Debug)]
struct Restaurant {
name: String,
cuisine: String,
}

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.

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

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

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

collation()

The collation to use for the operation.
Type: Collation

hint()

The index to use for the operation.
Type: Hint

comment()

The comment to attach to the operation.
Type: Bson

limit()

The maximum number of documents to count. This value must be a positive integer.
Type: u64

max_time()

The maximum amount of time in milliseconds that the operation can run.
Type: Duration

read_concern()

The read concern to use for the operation.
Type: ReadConcern

skip()

The number of documents to skip before counting documents.
Type: u64

selection_criteria()

The read preference and tags to use for the operation.
Type: SelectionCriteria

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

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

max_time()

The maximum amount of time in milliseconds that the operation can run.
Type: Duration

comment()

The comment to attach to the operation.
Type: Bson

read_concern()

The read concern to use for the operation.
Type: ReadConcern

selection_criteria()

The read preference and tags to use for the operation.
Type: SelectionCriteria

Para aprender más sobre cualquiera de los métodos o tipos analizados en esta guía, consulta la siguiente documentación de API:

Volver

Especifique los campos a devolver

En esta página