Docs Menu
Docs Home
/ /

Especifica los documentos a devolver

En esta guía, puede aprender a especificar qué documentos devolver de una operación de lectura encadenando los siguientes métodos a la 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 consulta

Los ejemplos de esta guía utilizan la restaurants colección sample_restaurants de la base de datos de los conjuntos de datos de ejemplo 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 database las collection variables 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 especificar el número máximo de documentos que se pueden devolver en una operación de lectura, aplique la opción limit a la operación. Puede configurar esta opción encadenando el método de establecimiento 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 devolver los documentos en un orden específico.

Para devolver los documentos en un orden específico, aplique la opción sort a la operación de lectura. Puede configurar esta opción encadenando el método de establecimiento sort al método find.

Al llamar a sort, pase el campo por el que se ordenarán los resultados y la dirección de ordenación. Un valor de dirección de ordenación de 1 ordena los valores de menor a mayor, y un valor de -1 los ordena de mayor a menor.

El siguiente ejemplo devuelve todos los documentos que tienen un valor de campo cuisine de 'Italian', ordenados en orden ascendente de 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 un número específico de documentos antes de devolver los resultados de la consulta, aplique la opción skip a la operación de lectura. Puede configurar esta opción encadenando el método de establecimiento 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"}
...

Puede encadenar los métodos limit, sort y skip a una sola llamada al método find. Esto le permite establecer un número máximo de documentos ordenados que se devolverán de la operación de lectura, omitiendo un número específico 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 cómo recuperar documentos, consulte la Guía de búsqueda de documentos.

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

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

Volver

Buscar documentos

En esta página