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
/ /

Valores únicos de campo

Dentro de una colección, diferentes documentos pueden contener distintos valores para un mismo campo. Por ejemplo, un documento en la restaurant la colección tiene un valor borough de "Manhattan", y otra tiene un valor borough de "Queens". Con el driver de Kotlin Sync, puedes recuperar todos los valores distintivos que un campo contiene en múltiples documentos dentro de una colección.

Los ejemplos de esta guía usan la colección restaurants en la base de datos sample_restaurants de la conjuntos de datos de muestra de Atlas. Para aprender a crear una implementación gratuita de MongoDB y cargar los conjuntos de datos de ejemplo, consulta la guía de MongoDB Get Started.

La siguiente clase de datos de Kotlin modela los documentos de esta colección:

data class Restaurant(
val name: String,
val borough: String,
val cuisine: String
)

Para recuperar los valores distintos de un campo especificado, llama al método distinct() y pasa el nombre del campo para el que deseas encontrar valores distintos.

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

val results = collection.distinct<String>(Restaurant::borough.name)
results.forEach { result ->
println(result)
}
Bronx
Brooklyn
Manhattan
Missing
Queens
Staten Island

Los resultados muestran cada valor distinto que aparece en el campo borough en todos los documentos de la colección. Aunque varios documentos tienen el mismo valor en el campo borough, cada valor aparece en los resultados solo una vez.

Puede aplicar un filtro de consulta al distinct() método para encontrar los distintos valores de campo en 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 cómo crear un filtro de consulta, consulte Especifica 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 results = collection.distinct<String>(
Restaurant::borough.name,
eq(Restaurant::cuisine.name, "Italian")
)
results.forEach { result ->
println(result)
}
Bronx
Brooklyn
Manhattan
Queens
Staten Island

El método distinct() se puede modificar encadenando métodos a la llamada del método distinct(). Si no especificas ninguna opción, el driver no personaliza la operación.

La siguiente tabla describe algunos métodos que puede usar para personalizar la operación distinct():

Método
Descripción

batchSize()

Sets the number of documents to return per batch.

collation()

Specifies the kind of language collation to use when sorting results. For more information, see Collation in the MongoDB Server manual.

comment()

Specifies a comment to attach to the operation.

filter()

Sets the query filter to apply to the query.

forEach()

Performs the given action on each element returned by the distinct() operation.

Para obtener una lista completa de los métodos que puede utilizar para modificar el distinct() método, consulte la documentación de la API DistinctIterable.

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". También utiliza la opción comment para añadir un comentario a la operación.

val results = collection.distinct<String>(
Restaurant::name.name,
and(
eq(Restaurant::borough.name, "Bronx"),
eq(Restaurant::cuisine.name, "Pizza")
)
).comment("Bronx pizza restaurants")
results.forEach { result ->
println(result)
}
$1.25 Pizza
18 East Gunhill Pizza
2 Bros
Aenos Pizza
Alitalia Pizza Restaurant
...

Para obtener más información sobre el comando distinct, consulta la Guía de distinción en el Manual de MongoDB Server.

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

  • distinct()

  • DistinctIterable

Volver

Contabilizar documentos

En esta página