Puede listar los valores distintos de un campo de documento en una colección llamando a la distinct()
método sobre un Collection instancia. Por ejemplo, si los documentos en una colección contienen el campo date, puedes utilizar 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 distintos de ese campo. También puede pasar un filtro de query como parámetro para encontrar valores de campo distintos solo en un subconjunto de documentos coincidentes. Para obtener más información sobre cómo crear filtros de query, consulte la
Guía 'Especificar una query' .
El método distinct() devuelve la lista de valores distintos como un tipo Vec<Bson>, 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 el que el valor del campo cuisine es "Turkish".
Selecciona 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")