Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.
Docs Menu

Recuperar valores distintos de campo

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

Dentro de una colección, diferentes documentos pueden contener diferentes valores para un mismo campo. Por ejemplo, un documento en una colección de restaurants tiene un valor borough de "Manhattan", y otro tiene un valor borough de "Queens". Al utilizar el driver de Scala, puedes recuperar todos los valores únicos que un campo contiene 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 los conjuntos de datos de muestra de Atlas. Para acceder a esta colección desde tu aplicación Scala, crea un MongoClient que se conecte a un clúster Atlas y asigna los siguientes valores a tus variables database y collection:

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 ejemplo, consulta la guía MongoDB Get Started.

Para recuperar los valores distintos de un campo especificado, llama al método distinct() y pasa el nombre del campo para el cual deseas 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, a la que se puede acceder paso a paso para obtener cada valor distinto del campo borough. Aunque varios documentos tienen el mismo valor en el campo borough, cada valor aparece solo una vez en los resultados.

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

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()

Establece la intercalación que se utilizará para la operación.
Tipo de parámetro: Collation

comment()

Adjunta un comentario a la operación.
Tipo de parámetro: BsonValue o String

first()

Recupera solo el primer valor de campo distinto.

El siguiente ejemplo recupera los valores distintos del campo name para todos los documentos que tengan un valor de campo borough de "Bronx" y un valor de campo cuisine de "Pizza". Luego, encadena el método comment() a distinct() para agregar 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: