Docs Menu
Docs Home
/ /

Recuperar valores distintos de campo

En esta guía, puede aprender a utilizar el controlador Scala para recuperar los distintos valores de un campo específico en una colección.

Dentro de una colección, diferentes documentos pueden contener distintos valores para un mismo campo. Por ejemplo, un documento en una restaurants Una colección tiene un valor borough de "Manhattan" y otra tiene un valor borough de "Queens". Con el controlador de Scala, puede recuperar todos los valores únicos que contiene un campo en varios documentos de una colección.

Los ejemplos de esta guía utilizan la colección restaurants en la base de datos sample_restaurants de la Conjuntos de datos de muestra de Atlas. Para acceder a esta colección desde su aplicación Scala, cree un MongoClient que se conecte a un clúster de Atlas y asigne los siguientes valores a las variables database collection y:

val database: MongoDatabase = client.getDatabase("sample_restaurants")
val collection: MongoCollection[Document] = database.getCollection("restaurants")

Para aprender cómo crear un clúster gratuito de MongoDB Atlas y cargar los conjuntos de datos de muestra, consulte la guía de introducción a MongoDB.

Para recuperar los valores distintos de un campo específico, llame al método distinct() y pase el nombre del campo para el cual desea encontrar valores distintos.

El siguiente ejemplo recupera los valores distintos del campo borough en la colección restaurants:

collection.distinct("borough")
.subscribe((value: String) => println(value),
(e: Throwable) => println(s"There was an error: $e"))
Bronx
Brooklyn
Manhattan
Missing
Queens
Staten Island

La operación devuelve una instancia de la clase DistinctObservable, que se puede iterar para acceder a cada valor del campo borough. Aunque varios documentos tienen el mismo valor en el campo borough, cada valor aparece solo una vez en los resultados.

Puede proporcionar un filtro de consulta al distinct() método para encontrar valores de campo distintos dentro de un subconjunto de documentos de una colección. Un filtro de consulta es una expresión que especifica los criterios de búsqueda utilizados para encontrar coincidencias en los documentos de una operación. Para obtener más información sobre la creación de un filtro de consulta, consulte Especifique una guía de consulta.

El siguiente ejemplo recupera los valores distintos del campo borough para todos los documentos que tienen un valor de campo cuisine de "Italian":

val filter = equal("cuisine", "Italian")
collection.distinct("borough", filter)
.subscribe((value: String) => println(value),
(e: Throwable) => println(s"There was an error: $e"))
Bronx
Brooklyn
Manhattan
Queens
Staten Island

Puede modificar el comportamiento del método distinct() encadenando los métodos proporcionados por la clase DistinctObservable. La siguiente tabla describe algunos de estos métodos:

Método
Descripción

collation()

Sets the collation to use for the operation.
Parameter Type: Collation

comment()

Attaches a comment to the operation.
Parameter Type: BsonValue or String

first()

Retrieves only the first distinct field value.

El siguiente ejemplo recupera los valores distintos del campo name para todos los documentos cuyo valor de campo borough es "Bronx" y cuyo valor de campo cuisine es "Pizza". Luego, encadena el método comment() a distinct() para añadir un comentario a la operación:

val filter = and(equal("borough", "Bronx"), equal("cuisine", "Pizza"))
collection.distinct("name", filter)
.comment("Bronx Pizza restaurants")
.subscribe((value: String) => println(value),
(e: Throwable) => println(s"There was an error: $e"))
$1.25 Pizza
18 East Gunhill Pizza
2 Bros
Aenos Pizza
Alitalia Pizza Restaurant
Amici Pizza And Pasta
Angie'S Cafe Pizza
...

Para aprender más sobre cualquiera de los métodos o tipos analizados en esta guía, consulta la siguiente documentación de API:

Volver

Especifique los campos a devolver

En esta página