Menu Docs
Página inicial do Docs
/ / /
Ruby Driver
/ /

Especifique documentos a serem devolvidos

Neste guia, você pode aprender a especificar quais documentos retornar de uma operação de leitura encadeando os seguintes métodos ao método find:

  • limite: especifica o número máximo de documentos para retornar de uma consulta

  • classificar: especifica a ordem de classificação para os documentos devolvidos

  • skip: especifica o número de documentos a ignorar antes de retornar os resultados da query

Os exemplos neste guia usam a collection restaurants no banco de dados sample_restaurants dos conjuntos de dados de amostra do Atlas. Para acessar essa coleção a partir do seu aplicação Ruby, crie um objeto Mongo::Client que se conecte a um Atlas cluster e atribua os seguintes valores às suas variáveis database e collection:

database = client.use('sample_restaurants')
collection = database[:restaurants]

Para saber como criar um cluster MongoDB Atlas gratuito e carregar os conjuntos de dados de amostra, consulte o guia Iniciar com Atlas .

Para especificar o número máximo de documentos retornados de uma operação de leitura, aplique a opção limit à operação. Você pode definir essa opção encadeando o método de preparação limit ao método find.

O exemplo a seguir encontra todos os restaurantes que têm um cuisine valor de campo de 'Italian' e limita os 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"}

Dica

O exemplo anterior retorna os cinco primeiros documentos correspondidos pela query de acordo com sua ordem natural no banco de banco de dados. A seção a seguir descreve como devolver os documentos em uma ordem especificada.

Para retornar documentos em uma ordem especificada, aplique a opção sort à operação de leitura. Você pode definir essa opção encadeando o método de preparação sort ao método find.

Ao chamar sort, passe o campo para classificar os resultados e a direção de classificação. Um valor de direção de classificação de 1 classifica os valores do mais baixo para o mais alto, e um valor de -1 os classifica do mais alto para o mais baixo.

O exemplo a seguir retorna todos os documentos que têm um valor de campo cuisine de 'Italian', classificados em ordem crescente 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 ignorar um número especificado de documentos antes de retornar os resultados da query, aplique a opção skip à operação de leitura. Você pode definir essa opção encadeando o método de preparação skip ao método find.

O exemplo a seguir retorna todos os documentos que têm um valor de campo borough de 'Manhattan' e ignora os primeiros 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"}
...

Você pode encadear os métodos limit, sort e skip a uma única chamada de método find. Isso permite que você defina um número máximo de documentos classificados para retornar da operação de leitura, ignorando um número específico de documentos antes de retornar.

O exemplo a seguir retorna 5 documentos com um valor cuisine de 'Italian'. Os resultados são classificados em ordem crescente pelo valor do campo name, ignorando os primeiros 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"}

Observação

A ordem em que você chama esses métodos não altera os documentos que são devolvidos. O driver Ruby reordena automaticamente as chamadas para executar primeiro a operação de classificação, a operação de ignorar em seguida e, em seguida, a operação de limite.

Para obter mais informações sobre como recuperar documentos, consulte o guia Localizar documentos.

Para obter mais informações sobre como especificar uma query, consulte o guia Especificar uma query .

Para saber mais sobre o método find e suas opções, consulte a documentação da API.

Voltar

Encontrar documentos

Nesta página