Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
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, consulte Guía Comienza con PyMongo.

Puedes usar una proyección para especificar qué campos incluir en un documento de devolución o para especificar qué campos excluir. No puedes combinar instrucciones de inclusión y exclusión en una única proyección, a menos que excluyas el campo _id.

Utiliza la siguiente sintaxis para especificar los campos que deseas incluir en el resultado:

{ "<Field Name>": 1 }

El siguiente ejemplo utiliza el método find() para encontrar todos los restaurantes con el valor del campo name de "Emerald Pub". Luego, utiliza una proyección para devolver solo los campos name, cuisine y borough en los documentos devueltos. Selecciona el Synchronous o la pestaña Asynchronous para ver el código correspondiente:

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'}
results = restaurants.find({ "name" : "Emerald Pub"}, {"name": 1, "cuisine": 1, "borough": 1})
async for restaurant in results:
print(restaurant)
{'_id': ObjectId('...'), 'borough': 'Manhattan', 'cuisine': 'American', 'name': 'Emerald Pub'}
{'_id': ObjectId('...'), 'borough': 'Queens', 'cuisine': 'American', 'name': 'Emerald Pub'}

Cuando utilizas una proyección para especificar los campos que se incluirán en el documento de retorno, el campo _id también se incluye por defecto. Todos los demás campos se excluyen implícitamente. Para remover el campo _id del documento de retorno, se debe excluirlo explícitamente.

Al especificar los campos a incluir, también puedes excluir el campo _id del documento devuelto.

El siguiente ejemplo realiza la misma query que el ejemplo anterior, pero excluye el campo _id de la proyección. Selecciona la pestaña Synchronous o Asynchronous para ver el código correspondiente:

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'}
results = restaurants.find({ "name" : "Emerald Pub"}, {"_id": 0, "name": 1, "cuisine": 1, "borough": 1})
async for restaurant in results:
print(restaurant)
{'borough': 'Manhattan', 'cuisine': 'American', 'name': 'Emerald Pub'}
{'borough': 'Queens', 'cuisine': 'American', 'name': 'Emerald Pub'}

Utilice la siguiente sintaxis para especificar los campos que desea excluir del resultado:

{ "<Field Name>": 0 }

El siguiente ejemplo utiliza el método find() para localizar todos los restaurantes con el valor del campo name igual a "Emerald Pub". Luego utiliza una proyección para excluir los campos grades y address de los documentos devueltos. Selecciona la pestaña Synchronous o Asynchronous para ver el código correspondiente:

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'}
results = restaurants.find({ "name" : "Emerald Pub"}, {"grades": 0, "address": 0} )
async 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'}

Cuando se utiliza una proyección para especificar qué campos excluir, cualquier campo no especificado se incluye implícitamente en el documento de retorno.

Las siguientes secciones describen los errores que puede ver al usar proyecciones.

El controlador devuelve un OperationFailure con este mensaje si intenta incluir y excluir campos en una sola proyección. Asegúrate de que tu proyección especifique solo los campos a incluir o los campos a excluir.

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 los métodos o tipos discutidos en esta guía, consultar la siguiente documentación de la API:

  • find()

Volver

Especifica los documentos a devolver

En esta página