Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
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 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.

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".

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

  • <Document>: Representa 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

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 };
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