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 saber como criar um cluster MongoDB Atlas gratuito e carregar os conjuntos de dados de amostra, consulte o guia Introdução ao PyMongo .
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. Você não pode combinar declarações de inclusão e exclusão em uma única projeção, a menos que esteja excluindo o campo _id
.
Especifique campos a serem incluídos
Use a seguinte sintaxe para especificar os campos a serem incluídos no resultado:
{ "<Field Name>": 1 }
O exemplo seguinte utiliza o método find()
para localizar todos os restaurantes com o valor de campo name
de "Emerald Pub"
. Em seguida, ele usa uma projeção para retornar somente os campos name
, cuisine
e borough
nos documentos retornados.
results = restaurants.find({ "name" : "Emerald Pub"}, {"name": 1, "cuisine": 1, "borough": 1}) for restaurant in results: print(restaurant)
{'_id': ObjectId('...'), 'borough': 'Manhattan', 'cuisine': 'American', 'name': 'Emerald Pub'} {'_id': ObjectId('...'), 'borough': 'Queens', 'cuisine': 'American', 'name': 'Emerald Pub'}
Quando você usa uma projeção para especificar campos a serem incluídos no documento de retorno, o campo _id
também é incluído por padrão. Todos os outros campos estão implicitamente excluídos. Para remover o campo _id
do documento de retorno, você deve excluí-lo explicitamente.
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:
results = restaurants.find({ "name" : "Emerald Pub"}, {"_id": 0, "name": 1, "cuisine": 1, "borough": 1}) for restaurant in results: print(restaurant)
{'borough': 'Manhattan', 'cuisine': 'American', 'name': 'Emerald Pub'} {'borough': 'Queens', 'cuisine': 'American', 'name': 'Emerald Pub'}
Especifique campos a serem excluídos
Use a seguinte sintaxe para especificar os campos a serem excluídos do resultado:
{ "<Field Name>": 0 }
O exemplo seguinte utiliza o método find()
para localizar todos os restaurantes com o valor de campo name
de "Emerald Pub"
. Em seguida, ele usa uma projeção para excluir os campos grades
e address
dos documentos retornados:
results = restaurants.find({ "name" : "Emerald Pub"}, {"grades": 0, "address": 0} ) for restaurant in results: print(restaurant)
{'_id': ObjectId('...'), 'borough': 'Manhattan', 'cuisine': 'American', 'name': 'Emerald Pub', 'restaurant_id': '40367329'} {'_id': ObjectId('...'), 'borough': 'Queens', 'cuisine': 'American', 'name': 'Emerald Pub', 'restaurant_id': '40668598'}
Quando você usa uma projeção para especificar quais campos excluir, quaisquer campos não especificados são implicitamente incluídos no documento de retorno.
Solução de problemas
As seções a seguir descrevem erros que você pode ver ao usar projeções.
'Não é possível fazer exclusão no campo <field> na projeção de inclusão'
O driver retorna um OperationFailure
com esta mensagem se você tentar incluir e excluir campos em uma única projeção. Certifique-se de que sua projeção especifique apenas campos a serem incluídos ou campos a serem excluídos.
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 um dos métodos ou tipos discutidos neste guia, consulte a seguinte documentação da API: