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

Especifique campos para retornar

Neste guia, você pode aprender como usar o driver Ruby para especificar quais campos devem ser retornados de uma operação de leitura usando uma projeção. Uma projeção é um documento que especifica quais campos o MongoDB retorna de uma query.

Os exemplos deste guia usam a coleção restaurants no banco de dados sample_restaurants 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_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 .

Você pode usar uma projeção para especificar quais campos incluir ou excluir em um documento de devolução. Você não pode combinar declarações de inclusão e exclusão em uma única projeção, a menos que esteja excluindo o campo _id.

Para incluir campos específicos em um resultado de operação de leitura, especifique a opção projection em um parâmetro para o método find. Para definir esta opção, use a seguinte sintaxe:

{ projection: { <field_name>: 1 } }

O exemplo a seguir usa o método find para encontrar todos os restaurantes nos quais o valor do campo name é 'Emerald Pub'. Em seguida, o código especifica a opção projection para instruir a operação de localizar a retornar somente os campos name, cuisine e borough de documentos correspondentes:

opts = { projection: { name: 1, cuisine: 1, borough: 1 } }
collection.find({ name: 'Emerald Pub' }, opts).each do |doc|
puts doc
end
{"_id"=>BSON::ObjectId('...'), "borough"=>"Manhattan", "cuisine"=>"American", "name"=>"Emerald Pub"}
{"_id"=>BSON::ObjectId('...'), "borough"=>"Queens", "cuisine"=>"American", "name"=>"Emerald Pub"}

Quando você usa uma projeção para especificar campos a serem incluídos no documento de retorno, o campo _id também é incluído por padrão. Todos os outros campos estão implicitamente excluídos. Para remover o campo _id do documento de retorno, você deve excluí-lo explicitamente.

Ao especificar campos a serem incluídos, você também pode excluir o campo _id do documento retornado.

O exemplo a seguir executa a mesma query do exemplo anterior, mas exclui o campo _id da projeção:

opts = { projection: { name: 1, cuisine: 1, borough: 1, _id: 0 } }
collection.find({ name: 'Emerald Pub' }, opts).each do |doc|
puts doc
end
{"borough"=>"Manhattan", "cuisine"=>"American", "name"=>"Emerald Pub"}
{"borough"=>"Queens", "cuisine"=>"American", "name"=>"Emerald Pub"}

Para excluir campos específicos de um resultado de operação de leitura, especifique a opção projection em um parâmetro para o método find. Para definir esta opção, use a seguinte sintaxe:

{ projection: { <field_name>: 0 } }

O exemplo a seguir usa o método find para encontrar todos os restaurantes nos quais o valor do campo name é 'Emerald Pub'. Em seguida, o código utiliza a opção projection para instruir a operação de localizar para omitir os campos grades e address no resultado:

opts = { projection: { grades: 0, address: 0 } }
collection.find({ name: 'Emerald Pub' }, opts).each do |doc|
puts doc
end
{"_id"=>BSON::ObjectId('...'), "borough"=>"Manhattan", "cuisine"=>"American",
"name"=>"Emerald Pub", "restaurant_id"=>"40367329"}
{"_id"=>BSON::ObjectId('...'), "borough"=>"Queens", "cuisine"=>"American",
"name"=>"Emerald Pub", "restaurant_id"=>"40668598"}

Quando você usa uma projeção para especificar quais campos excluir, quaisquer campos não especificados são implicitamente incluídos no documento de retorno.

Para saber mais sobre projeções, consulte o guia Campos de projeto no manual do MongoDB Server .

Para saber mais sobre o método find, consulte a documentação API.

Voltar

Especifique documentos a serem devolvidos

Nesta página