Docs Menu
Docs Home
/ /

Recuperar valores distintos de campo

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

Dentro de una colección, los documentos pueden contener diferentes 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'. Puede usar el controlador Ruby para 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 Ruby, cree un Mongo::Client objeto que se conecte a un clúster de Atlas y asigne los siguientes valores a las variables database collection y:

database = client.use('sample_restaurants')
collection = database[: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:

results = collection.distinct('borough')
results.each do |value|
puts value
end
Bronx
Brooklyn
Manhattan
Missing
Queens
Staten Island

La operación devuelve un arreglo que almacena cada valor distinto del campo borough. Aunque varios documentos tienen el mismo valor en el campo borough, cada valor solo aparece una vez en los resultados.

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.

Tip

Para obtener más información sobre cómo crear un filtro de consulta, consulte la 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':

results = collection.distinct('borough', { cuisine: 'Italian' })
results.each do |value|
puts value
end
Bronx
Brooklyn
Manhattan
Queens
Staten Island

Se puede modificar el comportamiento del método distinct enviando un objeto Hash que especifique valores de opción. La siguiente tabla describe las opciones que se pueden establecer para personalizar la operación:

Opción
Descripción

collation

The collation to use for the operation.
Type: Hash

max_time_ms

The maximum amount of time in milliseconds that the operation can run.
Type: Integer

read

The read preference to use for the operation. To learn more, see Read Preference in the MongoDB Server manual.
Type: Hash

session

The session to use for the operation.
Type: Session

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'. También establece la opción read, que indica a la operación que utilice una preferencia de lectura primary_preferred:

filter = { borough: 'Bronx', cuisine: 'Pizza' }
options = { read: { mode: :primary_preferred } }
results = collection.distinct('name', filter, options)
results.each do |value|
puts value
end
$1.25 Pizza
18 East Gunhill Pizza
2 Bros
Aenos Pizza
Alitalia Pizza Restaurant
Amici Pizza And Pasta
Angie'S Cafe Pizza
Anthony & Joe'S Pizza
Anthony'S Pizza
Antivari Pizza
Arturo'S Pizza
Bartow Pizza
...

Para obtener más información sobre el distinct método, consulte la documentación de la API.

Volver

Especifique los campos a devolver

En esta página