Menu Docs

Especifique campos para retornar

Neste guia, você pode aprender como especificar quais campos retornar 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 neste guia usam a sample_restaurants.restaurants coleção dos conjuntos de dados de amostra do Atlas . Para saber como criar um cluster do MongoDB Atlas gratuito e carregar os conjuntos de dados de amostra, consulte a seção início rápido.

Você pode usar uma projeção para especificar quais campos incluir em um documento de devolução ou para especificar quais campos excluir.

Ao especificar determinados campos para incluir em uma projeção, todos os outros campos são implicitamente excluídos (exceto o campo _id , que é incluído por padrão). Não é possível combinar declarações de inclusão e exclusão em uma única projeção, a menos que você esteja excluindo o campo _id .

Para remover o campo _id do documento retornado, você deve excluí-lo explicitamente.

Para especificar os campos a serem incluídos no resultado, encadeie o método Project() ao método Find(). Ao chamar o método Project(), você deve passar a definição de projeção como um parâmetro. Você pode construir uma definição de projeção utilizando o método Builders<T>.Projection.Include() e passando o nome do campo para incluir como um parâmetro. Este método pode ser encadeado para incluir múltiplos campos na projeção.

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 chama o método Project() para instruir a operação de busca a incluir os campos name e cuisine no 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" }

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

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

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 os campos a serem excluídos do resultado, encadeie o método Project() ao método Find(). Você pode excluir campos em sua projeção usando o método Builders<T>.Projection.Exclude() e passando o nome do campo a ser excluído como um parâmetro. Este método pode ser encadeado para excluir múltiplos campos na projeção.

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, ele usa uma projeção para excluir o campo cuisine dos documentos retornados:

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 saber mais sobre projeções, consulte o guia Campos de projeto no manual do MongoDB Server .

Para saber mais sobre qualquer uma das funções ou tipos discutidos neste guia, consulte a seguinte documentação da API: