Se puede query para varios documentos en una colección llamando a la
find() método sobre un
Collection instancia.
Pasa un filtro de query al método find() para devolver documentos en la colección que coincidan con el filtro. Si no se incluye un filtro, MongoDB devuelve todos los documentos de la colección.
Tip
Para obtener más información sobre la recuperación de documentos, consulte el Para obtener más información sobre cómo recuperardatos y cómo crear filtros de consulta, consulte la guía Especificar una consulta.
El find() método devuelve un tipo Cursor, que se puede iterar para recuperar documentos individuales. Para obtener más información sobre el uso de cursores, consulte la guía "Acceder a datos mediante un cursor".
Ejemplo
Este ejemplo recupera los documentos que coinciden con un filtro de query de la colección restaurants en la base de datos sample_restaurants. El método find() devuelve todos los documentos en los que el valor del campo cuisine es "French".
Puede modelar cada documento recuperado como un tipo Document o un tipo de datos personalizado. Para especificar qué tipo de datos representa los datos de la colección, reemplace el parámetro de tipo <T> en la línea resaltada por uno de los siguientes valores:
<Document>:Recupera e imprime documentos de colección como documentos BSON<Restaurant>: Recupera e imprime documentos de la colección como instancias de la estructuraRestaurant, definida al inicio del código
Selecciona el Asynchronous o la pestaña Synchronous para ver el código correspondiente para cada entorno de ejecución:
use mongodb::{ bson::doc, Client, Collection }; use futures::TryStreamExt; use serde::{ Deserialize, Serialize }; struct Restaurant { name: String, cuisine: String, } async fn main() -> mongodb::error::Result<()> { let uri = "<connection string>"; let client = Client::with_uri_str(uri).await?; // Replace <T> with the <Document> or <Restaurant> type parameter let my_coll: Collection<T> = client .database("sample_restaurants") .collection("restaurants"); let mut cursor = my_coll.find( doc! { "cuisine": "French" } ).await?; while let Some(doc) = cursor.try_next().await? { println!("{:#?}", doc); } Ok(()) }
use mongodb::{ bson::doc, sync::{Client, Collection} }; use serde::{ Deserialize, Serialize }; struct Restaurant { name: String, cuisine: String, } fn main() -> mongodb::error::Result<()> { let uri = "<connection string>"; let client = Client::with_uri_str(uri)?; // Replace <T> with the <Document> or <Restaurant> type parameter let my_coll: Collection<T> = client .database("sample_restaurants") .collection("restaurants"); let mut cursor = my_coll.find( doc! { "cuisine": "French" } ).run()?; for result in cursor { println!("{:#?}", result?); } Ok(()) }
Salida
Selecciona la pestaña BSON Document Results o Restaurant Struct Results para ver la salida de código correspondiente según el parámetro de tipo de tu colección:
... Some( Document({ "_id": ObjectId( "...", ), ... "name": String( "Cafe Un Deux Trois", ), ... }), ), Some( Document({ "_id": ObjectId( "...", ), ... "name": String( "Calliope", ), ... }), ) ...
... Restaurant { name: "Cafe Un Deux Trois", cuisine: "French", } Restaurant { name: "Calliope", cuisine: "French", } ...