Você pode fazer query de vários documentos em uma coleção chamando o métodofind() em uma Collection instância.
Passe um filtro de query para o método find() para retornar documentos na coleção que correspondam ao filtro. Se você não incluir um filtro, o MongoDB retornará todos os documentos na coleção.
Dica
Para saber mais sobre como recuperar documentos, consulte o guia Recuperar dados e, para saber mais sobre como criar filtros de query, consulte o guia Especificar uma query .
O método find() retorna um tipo de cursor, que você pode iterar para recuperar documentos individuais. Para saber mais sobre o uso de cursores, consulte o guia Acessar dados usando um cursor.
Exemplo
Este exemplo recupera documento que correspondem a um filtro de query da collection restaurants no reconhecimento de data center sample_restaurants . O exemplo preenche as instâncias da estrutura Restaurant com dados dos documentos recuperados.
O código a seguir usa um filtro de query que corresponde a documento nos quais o valor do campo cuisine é "French".
Selecione a aba Asynchronous ou Synchronous para ver o código correspondente para cada tempo de execução:
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?; let my_coll: Collection<Restaurant> = client .database("sample_restaurants") .collection("restaurants"); let mut cursor = my_coll.find( doc! { "cuisine": "French" }, None ).await?; while let Some(doc) = cursor.try_next().await? { println!("{:?}", doc); } Ok(()) }
// Results truncated ... Restaurant { name: "Cafe Un Deux Trois", cuisine: "French" } Restaurant { name: "Calliope", cuisine: "French" } ...
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)?; let my_coll: Collection<Restaurant> = client .database("sample_restaurants") .collection("restaurants"); let mut cursor = my_coll.find( doc! { "cuisine": "French" }, None )?; for result in cursor { println!("{:?}", result?); } Ok(()) }
// Results truncated ... Restaurant { name: "Cafe Un Deux Trois", cuisine: "French" } Restaurant { name: "Calliope", cuisine: "French" } ...