Você pode recuperar um único documento de uma coleção chamando o método find_one() em uma instância Collection.
Passe um filtro de query para o método find_one() para retornar um documento na coleção que corresponda ao filtro. Se vários documentos corresponderem ao filtro de query, esse método retornará o primeiro documento correspondente de acordo com sua ordem natural no banco de dados ou de acordo com a ordem de classificação especificada em uma instância do FindOneOptions .
O método find_one() retorna um tipo Option<T>, em que T é o tipo com o qual você parametrizou sua instância Collection.
Para saber mais sobre como recuperar documentos, consulte o guia Recuperar dados .
Exemplo
Este exemplo recupera um documento que corresponde a um filtro de query da collection restaurants no reconhecimento de data center sample_restaurants . O exemplo preenche uma estrutura Restaurant com dados do documento recuperado.
Este exemplo utiliza um filtro de query que corresponde a documento nos quais o valor do campo name é "Tompkins Square Bagels". O MongoDB recupera o primeiro documento que corresponde ao filtro de query.
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 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 result = my_coll.find_one( doc! { "name": "Tompkins Square Bagels" }, None ).await?; println!("{:#?}", result); Ok(()) }
Some( Restaurant { name: "Tompkins Square Bagels", cuisine: "American", }, )
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 result = my_coll.find_one( doc! { "name": "Tompkins Square Bagels" }, None )?; println!("{:#?}", result); Ok(()) }
Some( Restaurant { name: "Tompkins Square Bagels", cuisine: "American", }, )