Docs Menu
Docs Home
/ /

Especificar campos a devolver

En esta guía, aprenderá a 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 sample_restaurants.restaurants colección de la Conjuntos de datos de muestra de Atlas. Para aprender a crear un clúster gratuito de MongoDB Atlas y cargar los conjuntos de datos de muestra, consulte Inicio rápido.

Puede utilizar una proyección para especificar qué campos incluir en un documento de devolución o para especificar qué campos excluir.

Al especificar ciertos campos para incluir en una proyección, todos los demás se excluyen implícitamente (excepto el campo _id, que se incluye por defecto). No se pueden combinar declaraciones de inclusión y exclusión en una sola proyección, a menos que se excluya el campo _id.

Para eliminar el _id campo del documento devuelto, debe excluirlo explícitamente.

Para especificar los campos que se incluirán en el resultado, encadene el método Project() al método Find(). Al llamar al método Project(), debe pasar la definición de la proyección como parámetro. Puede construir una definición de proyección usando el método Builders<T>.Projection.Include() y pasando el nombre del campo que se incluirá como parámetro. Este método se puede encadenar para incluir varios campos en la proyección.

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 llama al método Project() para indicar a la operación de búsqueda que incluya los campos name y cuisine en el resultado:

var filter = Builders<BsonDocument>.Filter.Eq("name", "Emerald Pub");
var projection = Builders<BsonDocument>.Projection
.Include("name")
.Include("cuisine");
var results = collection.Find(filter).Project(projection).ToList();
foreach (var result in results)
{
Console.WriteLine(result.ToJson());
}
{ "_id" : ObjectId("..."), "cuisine" : "American", "name" : "Emerald Pub" }
{ "_id" : ObjectId("..."), "cuisine" : "American", "name" : "Emerald Pub" }

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

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

var filter = Builders<BsonDocument>.Filter.Eq("name", "Emerald Pub");
var projection = Builders<BsonDocument>.Projection
.Include("name")
.Include("cuisine")
.Exclude("_id");
var results = collection.Find(filter).Project(projection).ToList();
foreach (var result in results)
{
Console.WriteLine(result.ToJson());
}
{ "cuisine" : "American", "name" : "Emerald Pub" }
{ "cuisine" : "American", "name" : "Emerald Pub" }

Para especificar los campos que se excluirán del resultado, encadene el método Project() al método Find(). Puede excluir campos de su proyección usando el método Builders<T>.Projection.Exclude() y pasando el nombre del campo que se excluirá como parámetro. Este método se puede encadenar para excluir varios campos de la proyección.

El siguiente ejemplo utiliza el método Find() para encontrar todos los restaurantes cuyo valor del campo name sea "Emerald Pub". A continuación, utiliza una proyección para excluir el campo cuisine de los documentos devueltos:

var filter = Builders<BsonDocument>.Filter.Eq("name", "Emerald Pub");
var projection = Builders<BsonDocument>.Projection
.Exclude("cuisine");
var results = collection.Find(filter).Project(projection).ToList();
foreach (var result in results)
{
Console.WriteLine(result.ToJson());
}
{ "_id" : ObjectId("..."), "address" : { "building" : "308", "coord" : [-74.008493599999994, 40.725807199999998], "street" : "Spring Street", "zipcode" : "10013" }, "borough" : "Manhattan", "grades" : [{ "date" : ISODate("2014-02-24T00:00:00Z"), "grade" : "A", "score" : 5 }, { "date" : ISODate("2013-08-26T00:00:00Z"), "grade" : "A", "score" : 13 }, { "date" : ISODate("2013-03-04T00:00:00Z"), "grade" : "A", "score" : 12 }, { "date" : ISODate("2012-06-25T00:00:00Z"), "grade" : "A", "score" : 10 }, { "date" : ISODate("2011-12-23T00:00:00Z"), "grade" : "A", "score" : 10 }, { "date" : ISODate("2011-07-26T00:00:00Z"), "grade" : "C", "score" : 32 }], "name" : "Emerald Pub", "restaurant_id" : "40367329" }
{ "_id" : ObjectId("..."), "address" : { "building" : "18301", "coord" : [-73.791184999999999, 40.740119999999997], "street" : "Horace Harding Expressway", "zipcode" : "11365" }, "borough" : "Queens", "grades" : [{ "date" : ISODate("2014-05-07T00:00:00Z"), "grade" : "A", "score" : 12 }, { "date" : ISODate("2013-04-30T00:00:00Z"), "grade" : "A", "score" : 9 }, { "date" : ISODate("2012-03-01T00:00:00Z"), "grade" : "A", "score" : 13 }], "name" : "Emerald Pub", "restaurant_id" : "40668598" }

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

Para obtener más información sobre cualquiera de las funciones o tipos analizados en esta guía, consulte la siguiente documentación de API:

Volver

Retrieve Data

En esta página