Menu Docs
Página inicial do Docs
/ / /
PyMongo
/

Especifique campos para retornar

Nesta página

  • Visão geral
  • Dados de amostra
  • Tipos de projeção
  • Especifique campos a serem incluídos
  • Exclua o campo _id
  • Especifique campos a serem excluídos
  • Solução de problemas
  • 'Não é possível fazer exclusão no campo <field> na projeção de inclusão'
  • Informações adicionais
  • Documentação da API

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 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 .

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 .

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.

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'}

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.

As seções a seguir descrevem erros que você pode ver ao usar projeções.

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.

Para saber mais sobre projeções, consulte o guia Campos de projeto no manual do servidor MongoDB.

Para saber mais sobre qualquer um dos métodos ou tipos discutidos neste guia, consulte a seguinte documentação da API:

  • find()

Voltar

Retrieve Data