Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Docs Menu
Docs Home
/ /

Especifique los campos a devolver

En esta guía, se puede aprender cómo especificar qué campos devolver de una operación de lectura utilizando una proyección. Una proyección es un documento que especifica qué campos devuelve MongoDB de una query.

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, consulta el Inicio rápido.

Puedes usar una proyección para especificar qué campos incluir en un documento de retorno o para especificar qué campos excluir.

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

Para remover el campo _id del documento devuelto, debes excluirlo explícitamente.

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

El siguiente ejemplo utiliza el método Find() para encontrar todos los restaurantes en los que el valor del campo name es "Emerald Pub". Luego, 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 puedes excluir el campo _id del documento devuelto.

El siguiente ejemplo ejecuta la misma query 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 deben excluir del resultado, encadena el método Project() al método Find(). Puedes excluir campos en la proyección usando el método Builders<T>.Projection.Exclude() y pasando el nombre del campo a excluir como parámetro. Este método puede encadenarse para excluir varios campos en la proyección.

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 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 manual de MongoDB Server Guía de campos de proyecto.

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

Volver

Retrieve Data

En esta página