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

Especifica los documentos a devolver

En esta guía, puedes aprender a especificar qué documentos devolver de una operación de lectura encadenando los siguientes métodos al find :

  • límite: especifica el número máximo de documentos que se devolverán de una consulta

  • sort: Especifica el orden de clasificación de los documentos devueltos.

  • saltar: Especifica la cantidad de documentos que se deben omitir antes de devolver los resultados de la query.

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 Ruby, crea un objeto Mongo::Client que se conecte a un clúster de Atlas y asigna los siguientes valores a tus variables database y collection:

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

Para especificar el número máximo de documentos devueltos en una operación de lectura, aplicar la opción limit a la operación. Puedes establecer esta opción encadenando el método setter limit al método find.

El siguiente ejemplo encuentra todos los restaurantes que tienen un valor de campo cuisine de 'Italian' y limita los resultados a 5 documentos:

filter = { cuisine: 'Italian' }
collection.find(filter)
.limit(5)
.each { |doc| puts doc }
{"_id"=>BSON::ObjectId('...'), ... , "name"=>"Philadelhia Grille Express",
"restaurant_id"=>"40364305"}
{"_id"=>BSON::ObjectId('...'), ... , "name"=>"Isle Of Capri Restaurant",
"restaurant_id"=>"40364373"}
{"_id"=>BSON::ObjectId('...'), ... , "name"=>"Marchis Restaurant",
"restaurant_id"=>"40364668"}
{"_id"=>BSON::ObjectId('...'), ... , "name"=>"Crystal Room",
"restaurant_id"=>"40365013"}
{"_id"=>BSON::ObjectId('...'), ... , name"=>"Forlinis Restaurant",
"restaurant_id"=>"40365098"}

Tip

El ejemplo anterior devuelve los primeros cinco documentos que coinciden con la consulta según su orden natural en la base de datos. La siguiente sección describe cómo retornar los documentos en un orden especificado.

Para devolver documentos en un orden especificado, aplica la opción sort a la operación de lectura. Puede establecer esta opción encadenando el método setter sort al método find.

Al llamar a sort, pasa el campo por el que se ordenarán los resultados y la dirección de ordenamiento. Un valor de dirección de ordenación de 1 ordena los valores de más bajo a más alto, y un valor de -1 los ordena de más alto a más bajo.

El siguiente ejemplo devuelve todos los documentos que tienen un valor de campo cuisine de 'Italian', ordenados en orden ascendente de los valores de campo name:

filter = { cuisine: 'Italian' }
collection.find(filter)
.sort(name: 1)
.each { |doc| puts doc }
{"_id"=>BSON::ObjectId('...'), ... , "name"=>"(Lewis Drug Store) Locanda Vini E Olii",
"restaurant_id"=>"40804423"}
{"_id"=>BSON::ObjectId('...'), ... , "name"=>"101 Restaurant And Bar",
"restaurant_id"=>"40560108"}
...
{"_id"=>BSON::ObjectId('...'), ... , "name"=>"Zucchero E Pomodori",
"restaurant_id"=>"41189590"}

Para omitir una cantidad especificada de documentos antes de devolver los resultados de la query, aplica la opción skip a la operación de lectura. Puede establecer esta opción encadenando el método setter skip al método find.

El siguiente ejemplo devuelve todos los documentos que tienen un valor de campo borough de 'Manhattan' y omite los primeros 10 documentos:

filter = { borough: 'Manhattan' }
collection.find(filter)
.skip(10)
.each { |doc| puts doc }
{"_id"=>BSON::ObjectId('...'), ... , "name"=>"Cafe Metro", "restaurant_id"=>"40363298"}
{"_id"=>BSON::ObjectId('...'), ... , "name"=>"Lexler Deli", "restaurant_id"=>"40363426"}
{"_id"=>BSON::ObjectId('...'), ... , "name"=>"Domino'S Pizza", "restaurant_id"=>"40363644"}
...

Puedes encadenar los métodos limit, sort y skip en una sola llamada al método find. Esto le permite establecer un número máximo de documentos ordenados para devolver de la operación de lectura, omitiendo una cantidad especificada de documentos antes de devolverlos.

El siguiente ejemplo devuelve 5 documentos cuyo valor cuisine es 'Italian'. Los resultados se ordenan en orden ascendente según el valor del campo name, omitiendo los primeros 10 documentos:

filter = { cuisine: 'Italian' }
collection.find(filter)
.limit(5)
.skip(10)
.sort(name: 1)
.each { |doc| puts doc }
{"_id"=>BSON::ObjectId('...'), ... , "name"=>"Acqua", "restaurant_id"=>"40871070"}
{"_id"=>BSON::ObjectId('...'), ... , "name"=>"Acqua Restaurant",
"restaurant_id"=>"41591488"}
{"_id"=>BSON::ObjectId('...'), ... , "name"=>"Acqua Santa", "restaurant_id"=>"40735858"}
{"_id"=>BSON::ObjectId('...'), ... , "name"=>"Acquista Trattoria",
"restaurant_id"=>"40813992"}
{"_id"=>BSON::ObjectId('...'), ... , "name"=>"Acquolina Catering", "restaurant_id"=>"41381423"}

Nota

El orden en que se llaman estos métodos no modifica los documentos devueltos. El controlador Ruby reordena automáticamente las llamadas para ejecutar primero la operación de ordenación, luego la de omisión y, finalmente, la de límite.

Para obtener más información sobre la recuperación de documentos, consulte la Guía sobre cómo encontrar documentos.

Para más información sobre cómo especificar una query, consulta la guía de Especificar una query.

Para obtener más información sobre el método find y sus opciones, consulta la documentación API.

Volver

Buscar documentos

En esta página