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

Encontrar documentos

Neste guia, você pode aprender como usar o driver Ruby para recuperar dados de uma coleção MongoDB usando operações de leitura. Você pode chamar o método find em uma coleção para recuperar documentos que correspondam a um conjunto de critérios.

Os exemplos neste guia utilizam a coleção do companies no banco de dados do sample_training a partir dosconjuntos 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_training')
collection = database[:companies]

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

Para recuperar documentos de uma coleção, use o método find. Este método usa um parâmetro de filtro de query e retorna um objeto Mongo::Collection::View, que representa a query. O driver adia a execução da query até que você obtenha os resultados usando métodos como first ou each. Depois de solicitar os resultados, o driver envia a consulta para o servidor e retorna um objeto Mongo::Cursor do qual você pode acessar os resultados.

Você pode encadear métodos de opção ao método find para refinar os resultados da operação.

Dica

Para saber mais sobre filtros de query, consulte o guia Especificar uma query .

Para encontrar vários documentos em uma coleção, passe um filtro de queries para o método find que especifica os critérios dos documentos que você deseja recuperar.

O exemplo a seguir usa o método find para localizar todos os documentos nos quais o campo founded_year tem o valor 1970:

results = collection.find(founded_year: 1970)

Quando você chama o método each no objeto Mongo::Collection::View que representa a consulta, o driver retorna um objeto Mongo::Cursor . Um cursor é um mecanismo que permite que um aplicação itere sobre os resultados do banco de dados enquanto mantém apenas um subconjunto deles na memória em determinado momento. Os cursores são úteis quando o método find retorna uma grande quantidade de documentos.

O código a seguir chama o método each para iterar nos resultados da query:

results.each do |doc|
puts doc
end
{"_id"=>BSON::ObjectId('...'), "name"=>"Mitsubishi Motors", "permalink"=>"mitsubishi-motors",
"crunchbase_url"=>"http://www.crunchbase.com/company/mitsubishi-motors",
"homepage_url"=>"http://www.mitsubishi-motors.com", ...}
{"_id"=>BSON::ObjectId('...'), "name"=>"Western Digital", "permalink"=>"western-digital",
"crunchbase_url"=>"http://www.crunchbase.com/company/western-digital",
"homepage_url"=>"http://www.wdc.com/en", ...}
{"_id"=>BSON::ObjectId('...'), "name"=>"Celarayn", "permalink"=>"celarayn",
"crunchbase_url"=>"http://www.crunchbase.com/company/celarayn",
"homepage_url"=>"http://www.celarayn.es", ...}

Observação

Localizar todos os documentos

Para localizar todos os documentos em uma coleção, chame o método find sem passar um filtro de query:

results = collection.find

Para localizar um único documento em uma coleção, chame o método find e passe um filtro de query que especifique os critérios do documento que você deseja localizar. Em seguida, encadeie o método first a find.

Se o filtro de query corresponder a mais de um documento, o método first recuperará o primeiro documento correspondente dos resultados da operação.

O exemplo a seguir encadeia o método first a find para localizar o primeiro documento no qual o campo name tem o valor 'LinkedIn':

document = collection.find(name: 'LinkedIn').first
puts document
{"_id"=>BSON::ObjectId('...'), "name"=>"LinkedIn", "permalink"=>"linkedin",
"crunchbase_url"=>"http://www.crunchbase.com/company/linkedin",
"homepage_url"=>"http://linkedin.com", "blog_url"=>"http://blog.linkedin.com",
...}

Dica

Ordem de classificação

O método first retorna o primeiro documento em ordem natural no disco se nenhum critério de classificação for especificado.

Você pode encadear métodos de opção ao método find para modificar os resultados da operação. A tabela a seguir descreve algumas dessas opções:

Opção
Descrição

batch_size

The number of documents to return per batch. The default value is 101.
Type: Integer

collation

The collation to use for the operation. The default value is the collation specified for the collection.
Type: Hash

comment

The comment to attach to the operation.
Type: Object

limit

The maximum number of documents the operation can return.
Type: Integer

skip

The number of documents to skip before returning results.
Type: Integer

sort

The order in which the operation returns matching documents.
Type: Hash

O exemplo a seguir usa o método find para localizar todos os documentos nos quais o campo number_of_employees tem o valor 1000. O exemplo utiliza a opção limit para retornar um máximo de 2 resultados:

limit_results = collection.find(number_of_employees: 1000).limit(2)
limit_results.each do |doc|
puts doc
end
{"_id"=>BSON::ObjectId('...'), "name"=>"Akamai Technologies", "permalink"=>"akamai-technologies",
"crunchbase_url"=>"http://www.crunchbase.com/company/akamai-technologies",
"homepage_url"=>"http://www.akamai.com", ...}
{"_id"=>BSON::ObjectId('...'), "name"=>"Yodle", "permalink"=>"yodle",
"crunchbase_url"=>"http://www.crunchbase.com/company/yodle",
"homepage_url"=>"http://www.yodle.com", ...}

Para obter uma lista completa de opções, consulte a documentação da API para o método de localização.

Para saber mais sobre filtros de query, consulte o guia Especificar uma query .

Para exibir exemplos de código que recuperam documentos usando o driver Ruby, consulte Documentos de query.

Para saber mais sobre qualquer um dos métodos ou tipos discutidos neste guia, consulte a seguinte documentação da API:

Voltar

Especificar uma query

Nesta página