Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Docs Menu
Docs Home
/ /

Contabilizar documentos

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.

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:

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

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.

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

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

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

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 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

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

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