Docs Menu
Docs Home
/ /

Lista de valores de campos distintos

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.

Este ejemplo busca valores distintos para un campo en la colección restaurants de la base de datos sample_restaurants. El método distinct() recupera valores distintos del campo borough en el subconjunto de documentos cuyo valor del campo cuisine es "Turkish".

Puede acceder a los documentos de la colección restaurants como instancias del tipo Document o como un tipo de dato personalizado. Para especificar qué tipo de dato representa los datos de la colección, sustituya el parámetro de tipo <T> en la línea resaltada por uno de los siguientes valores:

  • <Document>: Representa los documentos de colección como documentos BSON

  • <Restaurant>: Representa los documentos de colección como instancias de la estructura Restaurant, definida en la parte superior del código

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 };
use serde::{ Deserialize, Serialize };
#[derive(Serialize, Deserialize, Debug)]
struct Restaurant {
name: String,
cuisine: String,
borough: String,
}
#[tokio::main]
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 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 }
};
use serde::{ Deserialize, Serialize };
#[derive(Serialize, Deserialize, Debug)]
struct Restaurant {
name: String,
cuisine: String,
borough: 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 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")

Volver

Contar