Puede enumerar los distintos valores de un campo de documento en una colección llamando al método distinto()
método en un Collection Instancia. Por ejemplo, si los documentos de una colección contienen el campo date, puede usar el método distinct() para encontrar todos los valores posibles para ese campo en la colección.
Pase un nombre de campo como parámetro al método distinct() para devolver los valores distintivos de ese campo. También puede pasar un filtro de consulta como parámetro para encontrar valores distintivos de campo solo en un subconjunto de documentos coincidentes. Para obtener más información sobre la creación de filtros de consulta, consulte
Especifique una guía de consulta.
El distinct() método devuelve la lista de valores distintos como un Vec<Bson> tipo, un vector de valores Bson.
Ejemplo
Este ejemplo encuentra valores distintos para un campo en la colección restaurants de la base de datos sample_restaurants.
Este ejemplo encuentra valores distintos del campo borough en el subconjunto de documentos en los que el valor del campo cuisine es "Turkish".
Seleccione el Asynchronous o la pestaña Synchronous para ver el código correspondiente para cada entorno de ejecución:
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, None).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, None)?; 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")