Encontrar um documento
Você pode recuperar um único documento de uma coleção ligando para o métodofind_one() em uma Collection
instância.
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 find_one()
método retorna uma Opção<T> tipo, onde T
é o tipo com o qual você parametrizou sua Collection
instância do .
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 coleção restaurants
no banco de banco de dados sample_restaurants
. O método find_one()
retorna o primeiro documento no qual o valor do campo name
é "Tompkins Square Bagels"
.
Você pode modelar o documento recuperado como um tipo Document
ou um tipo de dados personalizado. Para especificar qual tipo de dados representa os dados da coleção, substitua o parâmetro de tipo <T>
na linha realçada por um dos seguintes valores:
<Document>
: Recupera e imprime documentos de coleção como documentos BSON<Restaurant>
: recupera e imprime documentos de coleção como instâncias da estruturaRestaurant
, definida na parte superior do código
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?; // Replace <T> with the <Document> or <Restaurant> type parameter let my_coll: Collection<T> = client .database("sample_restaurants") .collection("restaurants"); let result = my_coll.find_one( doc! { "name": "Tompkins Square Bagels" } ).await?; println!("{:#?}", result); 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 result = my_coll.find_one( doc! { "name": "Tompkins Square Bagels" } ).run()?; println!("{:#?}", result); Ok(()) }
Saída
Selecione a aba BSON Document Result ou Restaurant Struct Result para ver a saída de código correspondente com base no parâmetro de tipo da sua coleção:
Some( Document({ "_id": ObjectId( "...", ), ... "name": String( "Tompkins Square Bagels", ), ... }), )
Some( Restaurant { name: "Tompkins Square Bagels", cuisine: "American", }, )