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

Retrieve Data

En esta guía, puedes aprender cómo recuperar datos de tus colecciones MongoDB usando operaciones de lectura. Las operaciones de lectura son comandos que recuperan documentos del servidor.

Hay dos tipos de operaciones de lectura:

  • Operaciones de búsqueda, que permiten recuperar documentos de tus colecciones.

  • Operaciones de agregación, que te permiten transformar los datos en tus colecciones

Esta guía incluye las siguientes secciones:

  • Datos de muestra para ejemplos presenta los datos de muestra que son utilizados por los ejemplos de la operación de lectura

  • Encontrar operaciones describe cómo usar el controlador para ejecutar operaciones de búsqueda

  • Operaciones de agregación describe cómo usar el driver para ejecutar operaciones de agregación

  • Información adicional proporciona enlaces a recursos y documentación de la API para los tipos y métodos mencionados en esta guía

Los ejemplos en esta guía utilizan los siguientes documentos de muestra. Cada documento representa un artículo en el inventario de una tienda y contiene información sobre su categorización y precio unitario:

let docs = vec! [
Inventory {
item: "candle".to_string(),
category: "decor".to_string(),
unit_price: 2.89,
},
Inventory {
item: "blender".to_string(),
category: "kitchen".to_string(),
unit_price: 38.49,
},
Inventory {
item: "placemat".to_string(),
category: "kitchen".to_string(),
unit_price: 3.19,
},
Inventory {
item: "watering can".to_string(),
category: "garden".to_string(),
unit_price: 11.99,
}
];

Utiliza operaciones de búsqueda para recuperar datos de MongoDB. Las operaciones de búsqueda consisten en find() y find_one() métodos.

Para encontrar todos los documentos que coincidan con tus criterios, utiliza el método find(). Este método toma un filtro de query como parámetro. Un filtro de query consta de los campos y valores que forman los criterios para que los documentos coincidan.

El método retorna un tipo Cursor a través del cual puedes iterar para recuperar cualquier documento que coincida con los criterios de filtro.

Para ver un ejemplo que utiliza este método para recuperar datos, consulta el ejemplo de find().

Para obtener más información sobre cómo especificar una query, consulte el Guía 'Especificar una query' .

Para encontrar el primer documento que cumpla con tus criterios, usa el método find_one(). Este método toma un filtro de query como parámetro. Un filtro de query consta de los campos y valores que forman los criterios para que los documentos coincidan.

Si un documento coincide con los criterios del filtro, el método devuelve un tipo Result<Option<T>> con un valor de Some. Si ningún documento cumple con los criterios del filtro, find_one() devuelve un tipo Result<Option<T>> con un valor de None.

Para ver un ejemplo que utiliza este método para recuperar datos, consulta el ejemplo de find_one().

Puedes modificar el comportamiento de find() pasando una instancia de FindOptions como parámetro, y puedes modificar el comportamiento de find_one() pasando una instancia de FindOneOptions.

Para usar valores por defecto para cada configuración, especifica el valor None como parámetro de opciones.

La siguiente tabla describe la configuración utilizada comúnmente que puedes especificar en FindOptions y FindOneOptions:

Configuración
Descripción

collation

The collation to use when sorting results. To learn more about collations, see the Collations guide.

Type: Collation
Default: None

hint

The index to use for the operation. To learn more about indexes, see Indexes in the Server manual.

Type: Hint
Default: None

projection

The projection to use when returning results.

Type: Document
Default: None

read_concern

The read concern to use for the find operation. If you don't set this option, the operation inherits the read concern set for the collection. To learn more about read concerns, see Read Concern in the Server manual.

Type: ReadConcern

skip

The number of documents to skip when returning results. To learn more about how to use the skip() builder method, see Skip Returned Results.

Type: u64
Default: None

sort

The sort to use when returning results. By default, the driver returns documents in their natural order, or as they appear in the database. To learn more, see natural order in the Server manual glossary. To learn more about how to use the sort() builder method, see Sort Results.

Type: Document
Default: None

Nota

Opciones de instanciación

El driver de Rust implementa el patrón de diseño Builder para la creación de muchos tipos diferentes, como FindOneOptions o FindOptions. Puedes utilizar el método builder() de cada tipo para construir una instancia de opciones encadenando funciones construtoras de opciones una a la vez.

Para obtener una lista completa de configuraciones que puede especificar para cada tipo, consulte la documentación de la API para FindOptions y FindOneOptions.

Las siguientes secciones contienen ejemplos que utilizan los métodos find() y findOne() para recuperar documentos de muestra que coinciden con los criterios de filtro.

Este ejemplo muestra cómo llamar al método find() con los siguientes parámetros:

  • Un filtro de query que coincide con documentos donde el valor de unit_price es menor que 12.00 y el valor de category no es "kitchen"

  • Una instancia FindOptions que ordena los documentos coincidentes por unit_price en orden descendente

let opts = FindOptions::builder()
.sort(doc! { "unit_price": -1 })
.build();
let mut cursor = my_coll.find(
doc! { "$and": vec!
[
doc! { "unit_price": doc! { "$lt": 12.00 } },
doc! { "category": doc! { "$ne": "kitchen" } }
] },
opts
).await?;
while let Some(result) = cursor.try_next().await? {
println!("{:?}", result);
};
Inventory { item: "watering can", category: "garden", unit_price: 11.99 }
Inventory { item: "candle", category: "decor", unit_price: 2.89 }

Este ejemplo muestra cómo llamar al método find_one() con los siguientes parámetros:

  • Un filtro de query que empareja documentos donde el valor de unit_price es menor o igual a 20.00

  • Una instancia de FindOneOptions que omite los dos primeros documentos encontrados

let opts = FindOneOptions::builder().skip(2).build();
let result = my_coll.find_one(
doc! { "unit_price":
doc! { "$lte": 20.00 } },
opts
).await?;
println!("{:#?}", result);
Some(
Inventory {
item: "watering can",
category: "garden",
unit_price: 11.99,
},
)

Utiliza operaciones de agregación para recuperar y transformar datos de tus colecciones. Puede realizar operaciones de agregación utilizando el método aggregate().

El método aggregate() toma una pipeline de agregación como parámetro. Una pipeline de agregación incluye una o más etapas que especifican cómo transformar los datos. Una etapa incluye un operador de agregación (precedido por un $) y cualquier parámetro requerido para ese operador.

Para obtener más información sobre las agregaciones y ver ejemplos de agregación, consulte la guía de Agregación.

El método devuelve los documentos resultantes en un tipo Cursor. Si tu pipeline de agregación no contiene una etapa $match, el pipeline procesa todos los documentos de la colección.

Puede modificar el comportamiento de aggregate() pasando una instancia de AggregateOptions como parámetro opcional.

Para usar valores por defecto para cada configuración, especifica el valor None como parámetro de opciones.

La siguiente tabla describe las configuraciones de uso común que puede especificar en AggregateOptions:

Configuración
Descripción

allow_disk_use

Enables writing to temporary files. If true, aggregation stages can write data to the _tmp subdirectory in the dbPath directory.

Type: bool
Default: false

batch_size

Specifies the maximum number of documents the server returns per cursor batch. This option sets the number of documents the cursor keeps in memory rather than the number of documents the cursor returns.

Type: u32
Default: 101 documents initially, 16 MB maximum for subsequent batches

collation

The collation to use when sorting results. To learn more about collations, see the Collations guide.

Type: Collation
Default: None

hint

The index to use for the operation. To learn more about indexes, see Indexes in the Server manual.

Type: Hint
Default: None

read_concern

The read concern to use for the find operation. If you don't set this option, the operation inherits the read concern set for the collection. To learn more about read concerns, see Read Concern in the Server manual.

Type: ReadConcern

write_concern

The write concern for the operation. If you don't set this option, the operation inherits the write concern set for the collection. To learn more about write concerns, see Write Concern in the Server manual.

Type: WriteConcern

Para obtener una lista completa de configuraciones, consulta la documentación de la API para AggregateOptions.

Este ejemplo muestra cómo llamar al método aggregate() con un pipeline que contiene las siguientes etapas:

  • Una etapa de $group para agrupar documentos por el campo category y calcular el promedio del campo unit_price por category

  • Una etapa de $sort para por avg_price en orden ascendente

let pipeline = vec![
doc! { "$group": doc! { "_id" : doc! {"category": "$category"} ,
"avg_price" : doc! { "$avg" : "$unit_price" } } },
doc! { "$sort": { "_id.avg_price" : 1 } }
];
let mut cursor = my_coll.aggregate(pipeline, None).await?;
while let Some(result) = cursor.try_next().await? {
println!("{:?}", result);
};
Document({"_id": Document({"category": String("decor")}), "avg_price": Double(2.890000104904175)})
Document({"_id": Document({"category": String("kitchen")}), "avg_price": Double(20.840000867843628)})
Document({"_id": Document({"category": String("garden")}), "avg_price": Double(11.989999771118164)})

Para ejemplos ejecutables de las operaciones de búsqueda, consulta los siguientes ejemplos de uso:

Para obtener más información sobre las operaciones en esta guía, consulte la siguiente documentación:

Para obtener más información sobre los métodos y tipos mencionados en esta guía, vea la siguiente documentación de la API:

Volver

autenticación de empresa

En esta página