Overview
Dentro de una colección, diferentes documentos pueden contener diferentes valores para un mismo campo. Por ejemplo, uno restaurant El documento tiene un valor de borough de "Manhattan", y otro tiene un valor de borough de "Queens". Con PyMongo, puedes recuperar todos los valores únicos que un campo contiene en múltiples documentos de una colección.
Datos de muestra
Los ejemplos en esta guía utilizan la colección sample_restaurants.restaurants 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
Comience a utilizar PyMongo.
distinct() Método
Para recuperar los valores distintos de un campo especificado, llama al método distinct() y pasa el nombre del campo para el que deseas encontrar valores distintos.
Recuperar valores distintos en una colección
El siguiente ejemplo recupera los valores distintos del campo borough en la colección restaurants. Seleccione el Synchronous o la pestaña Asynchronous para ver el código correspondiente:
results = restaurants.distinct("borough") for restaurant in results: print(restaurant)
Bronx Brooklyn Manhattan Missing Queens Staten Island
results = await restaurants.distinct("borough") for restaurant in results: print(restaurant)
Bronx Brooklyn Manhattan Missing Queens Staten Island
Los resultados muestran cada valor distinto que aparece en el campo borough en todos los documentos de la colección. Aunque varios documentos tienen el mismo valor en el campo borough, cada valor aparece en los resultados solo una vez.
Recupere valores distintos en documentos especificados
Puede proporcionar un filtro de query al método distinct() para encontrar los distintos valores de campo en un subconjunto de documentos en una colección. Un filtro de query es una expresión que especifica los criterios de búsqueda utilizados para encontrar documentos en una operación. Para obtener más información sobre cómo crear un filtro de query, consulte Especificar una query.
El siguiente ejemplo recupera los valores distintos del campo borough para todos los documentos cuyo valor de campo cuisine es "Italian". Seleccione la pestaña Synchronous o Asynchronous para ver el código correspondiente:
results = restaurants.distinct("borough", { "cuisine": "Italian" }) for restaurant in results: print(restaurant)
Bronx Brooklyn Manhattan Queens Staten Island
results = await restaurants.distinct("borough", { "cuisine": "Italian" }) for restaurant in results: print(restaurant)
Bronx Brooklyn Manhattan Queens Staten Island
Modificar el comportamiento de Distinct
El método distinct() acepta parámetros opcionales, que representan opciones que puedes usar para configurar la operación. Si no especificas ninguna opción, el driver no personaliza la operación.
La siguiente tabla describe las opciones que puedes configurar para personalizar distinct():
Propiedad | Descripción |
|---|---|
| A query filter that specifies the documents to retrieve distinct
values from. |
| An instance of ClientSession. |
| A comment to attach to the operation. |
| The maximum amount of time to allow the operation to run, in
milliseconds. |
| An instance of Collation. |
El siguiente ejemplo recupera los valores distintos del campo name para todos los documentos cuyo valor de campo borough es "Bronx" y cuyo valor de campo cuisine es "Pizza". También utiliza la opción comment para añadir un comentario a la operación. Seleccione la pestaña Synchronous o Asynchronous para ver el código correspondiente:
results = restaurants.distinct("name", { "borough": "Bronx", "cuisine": "Pizza" }, comment="Bronx pizza restaurants" )
$1.25 Pizza 18 East Gunhill Pizza 2 Bros Aenos Pizza Alitalia Pizza Restaurant ...
results = await restaurants.distinct("name", { "borough": "Bronx", "cuisine": "Pizza" }, comment="Bronx pizza restaurants" )
$1.25 Pizza 18 East Gunhill Pizza 2 Bros Aenos Pizza Alitalia Pizza Restaurant ...
Documentación de la API
Para aprender más sobre cualquiera de los métodos o tipos analizados en esta guía, consulta la siguiente documentación de API: