Listar valores de campo distintos
Você pode listar os valores distintos de um campo de documento em uma coleção chamando o distinct() método em uma instância do Collection
. Por exemplo, se os documentos em uma collection contiverem o date
campo , você poderá usar o distinct()
método para localizar todos os valores possíveis para esse campo na collection.
Passe um nome de campo como parâmetro para o método distinct()
para retornar os valores distintos para esse campo. Você também pode passar um filtro de query como parâmetro para localizar valores de campo distintos de somente um subconjunto de documentos correspondentes. Para saber mais sobre como criar filtros de query, consulte o guia Especificar uma query .
O distinct()
método retorna a lista de valores distintos como um Vec<Bson>
tipo , um vetor de BSON valores.
Exemplo
Este exemplo encontra valores distintos para um campo na coleção restaurants
do banco de dados sample_restaurants
.
Este exemplo encontra valores distintos do campo borough
no subconjunto de documentos nos quais o valor do campo cuisine
é "Turkish"
.
Selecione a aba Asynchronous ou Synchronous para ver o código correspondente para cada tempo de execução:
use std::env; use mongodb::{ bson::{ Document, doc }, Client, Collection }; async fn main() -> mongodb::error::Result<()> { let uri = "<connection string>"; let client = Client::with_uri_str(uri).await?; let my_coll: Collection<Document> = client .database("sample_restaurants") .collection("restaurants"); let filter = doc! { "cuisine": "Turkish" }; let boroughs = my_coll.distinct("borough", filter).await?; println!("List of field values for 'borough':"); for b in boroughs.iter() { println!("{:?}", b); } Ok(()) }
List of field values for 'borough': String("Brooklyn") String("Manhattan") String("Queens") String("Staten Island")
use std::env; use mongodb::{ bson::{ Document, doc }, sync::{ Client, Collection } }; fn main() -> mongodb::error::Result<()> { let uri = "<connection string>"; let client = Client::with_uri_str(uri)?; let my_coll: Collection<Document> = client .database("sample_restaurants") .collection("restaurants"); let filter = doc! { "cuisine": "Turkish" }; let boroughs = my_coll.distinct("borough", filter).run()?; println!("List of field values for 'borough':"); for b in boroughs.iter() { println!("{:?}", b); } Ok(()) }
List of field values for 'borough': String("Brooklyn") String("Manhattan") String("Queens") String("Staten Island")