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

Especifique los campos a devolver

En esta guía, aprenderá a usar el controlador Ruby para especificar los campos que se devolverán de una operación de lectura mediante una proyección. Una proyección es un documento que especifica los campos que MongoDB devuelve de una consulta.

Los ejemplos de esta guía utilizan el restaurants colección en la base de datos sample_restaurants de la Conjuntos de datos de muestra de Atlas. Para acceder a esta colección desde su aplicación Ruby, cree un objeto Mongo::Client que se conecte a un clúster Atlas y asigne los siguientes valores a las 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.

Puedes usar una proyección para especificar qué campos incluir o excluir en un documento retornado. No puedes combinar instrucciones de inclusión y exclusión en una única proyección, a menos que excluyas el campo _id.

Para incluir campos específicos en un resultado de operación de lectura, especifica la opción projection con un parámetro en el método find. Para configurar esta opción, utilice la siguiente sintaxis:

{ projection: { <field_name>: 1 } }

El siguiente ejemplo utiliza el método find para buscar todos los restaurantes cuyo valor del campo name sea 'Emerald Pub'. A continuación, el código especifica la opción projection para indicar a la operación de búsqueda que devuelva solo los campos name, cuisine y borough de los documentos coincidentes:

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"}

Cuando utilizas una proyección para especificar los campos que se incluirán en el documento de retorno, el campo _id también se incluye por defecto. Todos los demás campos se excluyen implícitamente. Para remover el campo _id del documento de retorno, se debe excluirlo explícitamente.

Al especificar los campos a incluir, también puedes excluir el campo _id del documento devuelto.

El siguiente ejemplo realiza la misma consulta que el ejemplo anterior, pero excluye el campo _id de la proyección:

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 un resultado de operación de lectura, especifique la opción projection en un parámetro para el método find. Para establecer esta opción, utilice la siguiente sintaxis:

{ projection: { <field_name>: 0 } }

El siguiente ejemplo utiliza el método find para encontrar todos los restaurantes en los que el valor del campo name sea 'Emerald Pub'. Luego, el código utiliza la opción projection para indicar a la operación de búsqueda que omita los campos grades y address en el 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"}

Cuando se utiliza una proyección para especificar qué campos excluir, cualquier campo no especificado se incluye implícitamente en el documento de retorno.

Para obtener más información sobre las proyecciones, consulte la guía de Campos del proyecto en el manual de MongoDB Server.

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

Volver

Especifica los documentos a devolver

En esta página