Especifique campos para retornar
Nesta página
Visão geral
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.
Dados de amostra
Os exemplos neste guia usam a collection sample_restaurants.restaurants
dos conjuntos de dados de amostra do Atlas. Para aprender como criar um agrupamento de MongoDB Atlas gratuito e carregar os conjuntos de dados de amostra, consulte oInício Rápidodo .
Tipos de projeção
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.
Especifique campos a serem incluídos
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" }
Exclua o _id
campo
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" }
Especifique campos a serem excluídos
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" }
Informações adicionais
Para saber mais sobre projeções, consulte o guia Campos de projeto no manual do MongoDB Server .
Documentação da API
Para saber mais sobre qualquer uma das funções ou tipos discutidos neste guia, consulte a seguinte documentação da API: