En esta guía, puedes aprender a especificar qué documentos devolver de una operación de lectura utilizando los siguientes métodos:
limit(): Especifica el número máximo de documentos que se devolverán de una consulta.
sort(): Especifica el orden de clasificación de los documentos devueltos.
skip(): Especifica la cantidad de documentos que se deben omitir antes de devolver los resultados de la consulta.
Los ejemplos de esta guía utilizan la colección sample_restaurants.restaurants de 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 Tutorial paraempezar a usar PyMongo.
Para especificar el número máximo de documentos devueltos de una operación de lectura, llame al método limit().
El siguiente ejemplo busca todos los restaurantes cuyo valor de campo cuisine es "Italian" y limita los resultados a 5 documentos. Seleccione el Synchronous
o pestaña Asynchronous para ver el código correspondiente:
| results = restaurants.find({ "cuisine" : "Italian"}).limit(5) |
|
| for restaurant in results: |
| print(restaurant["name"]) |
| Isle Of Capri Resturant Italian |
| Arturo'S Italian |
| Patsy'S Italian Restaurant Italian |
| Piccola Venezia Italian |
| Roadhouse Restaurant Italian |
| results = restaurants.find({ "cuisine" : "Italian"}).limit(5) |
|
| async for restaurant in results: |
| print(restaurant["name"]) |
| Isle Of Capri Resturant Italian |
| Arturo'S Italian |
| Patsy'S Italian Restaurant Italian |
| Piccola Venezia Italian |
| Roadhouse Restaurant Italian |
También puede limitar el número de documentos devueltos especificando el parámetro limit en su método find(). Seleccione la pestaña Synchronous o Asynchronous para ver el código correspondiente:
| results = restaurants.find({ "cuisine" : "Italian"}, limit=5) |
|
| for restaurant in results: |
| print(restaurant["name"]) |
| Isle Of Capri Resturant Italian |
| Arturo'S Italian |
| Patsy'S Italian Restaurant Italian |
| Piccola Venezia Italian |
| Roadhouse Restaurant Italian |
| results = restaurants.find({ "cuisine" : "Italian"}, limit=5) |
|
| async for restaurant in results: |
| print(restaurant["name"]) |
| Isle Of Capri Resturant Italian |
| Arturo'S Italian |
| Patsy'S Italian Restaurant Italian |
| Piccola Venezia Italian |
| Roadhouse Restaurant Italian |
Tip
Los ejemplos anteriores devuelven los primeros cinco documentos devueltos por la consulta, sin ningún orden en particular. La siguiente sección describe cómo devolver los documentos en un orden de clasificación específico.
Para devolver documentos en un orden determinado, llama al método sort(). El método sort() toma dos parámetros: el campo por el que ordenar los resultados y una dirección de ordenación. Para especificar la dirección de ordenamiento, especifica pymongo.ASCENDING o pymongo.DESCENDING. ASCENDING ordena los valores de menor a mayor y DESCENDING los ordena de mayor a menor. Si no especificas ninguna dirección, el método ordena por defecto de forma ascendente.
El siguiente ejemplo devuelve todos los documentos con el valor cuisine de "Italian", ordenados ascendentemente. Seleccione la pestaña Synchronous o Asynchronous para ver el código correspondiente:
| results = restaurants.find({ "cuisine" : "Italian"}).sort("name", pymongo.ASCENDING) |
|
| for restaurant in results: |
| print(restaurant["name"]) |
| (Lewis Drug Store) Locanda Vini E Olii |
| 101 Restaurant And Bar |
| 44 Sw Ristorante & Bar |
| 900 Park |
| A Voce |
| ... |
| Zucchero E Pomodori |
| results = restaurants.find({ "cuisine" : "Italian"}).sort("name", pymongo.ASCENDING) |
|
| async for restaurant in results: |
| print(restaurant["name"]) |
| (Lewis Drug Store) Locanda Vini E Olii |
| 101 Restaurant And Bar |
| 44 Sw Ristorante & Bar |
| 900 Park |
| A Voce |
| ... |
| Zucchero E Pomodori |
También puede ordenar documentos especificando el parámetro sort en su método find(). El siguiente ejemplo especifica el parámetro sort para devolver los resultados en el mismo orden que el ejemplo anterior. Seleccione la pestaña Synchronous o Asynchronous para ver el código correspondiente:
| results = restaurants.find({ "cuisine" : "Italian"}, sort={"name": pymongo.ASCENDING} ) |
|
| for restaurant in results: |
| print(restaurant["name"]) |
| (Lewis Drug Store) Locanda Vini E Olii |
| 101 Restaurant And Bar |
| 44 Sw Ristorante & Bar |
| 900 Park |
| A Voce |
| ... |
| Zucchero E Pomodori |
| results = restaurants.find({ "cuisine" : "Italian"}, sort={"name": pymongo.ASCENDING} ) |
|
| async for restaurant in results: |
| print(restaurant["name"]) |
| (Lewis Drug Store) Locanda Vini E Olii |
| 101 Restaurant And Bar |
| 44 Sw Ristorante & Bar |
| 900 Park |
| A Voce |
| ... |
| Zucchero E Pomodori |
Para omitir una cantidad especificada de documentos antes de devolver los resultados de tu query, llama al método skip() y pasa la cantidad de documentos a omitir. El método skip() ignora la cantidad especificada de documentos en los resultados de tu query y devuelve el resto.
El siguiente ejemplo devuelve todos los documentos cuyo valor de campo borough es "Manhattan" y omite los primeros 10 documentos. Seleccione la pestaña Synchronous o Asynchronous para ver el código correspondiente:
| results = restaurants.find({ "borough" : "Manhattan"}, skip=10) |
|
| for restaurant in results: |
| print(restaurant["name"]) |
| Dorrian'S Red Hand Restaurant |
| The Princeton Club |
| Moran'S Chelsea |
| La Parisienne Diner |
| Jimmy'S Corner |
| ... |
| results = restaurants.find({ "borough" : "Manhattan"}, skip=10) |
|
| async for restaurant in results: |
| print(restaurant["name"]) |
| Dorrian'S Red Hand Restaurant |
| The Princeton Club |
| Moran'S Chelsea |
| La Parisienne Diner |
| Jimmy'S Corner |
| ... |
También puede omitir los documentos devueltos utilizando el parámetro skip del método find(). El siguiente ejemplo especifica la misma omisión que el ejemplo anterior. Seleccione la pestaña Synchronous o Asynchronous para ver el código correspondiente:
| results = restaurants.find({ "borough" : "Manhattan"}, skip=10) |
|
| for restaurant in results: |
| print(restaurant["name"]) |
| Dorrian'S Red Hand Restaurant |
| The Princeton Club |
| Moran'S Chelsea |
| La Parisienne Diner |
| Jimmy'S Corner |
| ... |
| results = restaurants.find({ "borough" : "Manhattan"}, skip=10) |
|
| async for restaurant in results: |
| print(restaurant["name"]) |
| Dorrian'S Red Hand Restaurant |
| The Princeton Club |
| Moran'S Chelsea |
| La Parisienne Diner |
| Jimmy'S Corner |
| ... |
Puede combinar los métodos limit(), sort() y skip() en una sola operación. Esto le permite establecer un número máximo de documentos ordenados para devolver, omitiendo un número específico de documentos antes de devolverlos.
El siguiente ejemplo devuelve documentos con el valor cuisine de "Italian". Los resultados se ordenan alfabéticamente, omitiendo los primeros 10 documentos. Seleccione la pestaña Synchronous o Asynchronous para ver el código correspondiente:
| results = restaurants.find({ "cuisine" : "Italian"}) \ |
| .sort("name", pymongo.ASCENDING) \ |
| .limit(5) \ |
| .skip(10) |
|
| for restaurant in results: |
| print(restaurant["name"]) |
| Acqua |
| Acqua Restaurant |
| Acqua Santa |
| Acquista Trattoria |
| Acquolina Catering |
| results = restaurants.find({ "cuisine" : "Italian"}) \ |
| .sort("name", pymongo.ASCENDING) \ |
| .limit(5) \ |
| .skip(10) |
|
| async for restaurant in results: |
| print(restaurant["name"]) |
| Acqua |
| Acqua Restaurant |
| Acqua Santa |
| Acquista Trattoria |
| Acquolina Catering |
Nota
El orden en que se llaman estos métodos no modifica los documentos devueltos. El controlador reordena automáticamente las llamadas para realizar primero las operaciones de ordenación y omisión, y después la operación de límite.
También puede limitar, ordenar y omitir resultados especificándolos como parámetros en el método find(). El siguiente ejemplo especifica la misma consulta que el ejemplo anterior. Seleccione la pestaña Synchronous o Asynchronous para ver el código correspondiente:
| results = restaurants.find({ "cuisine" : "Italian"}, limit=5, sort={"name": pymongo.ASCENDING}, skip=10) |
|
| for restaurant in results: |
| print(restaurant["name"]) |
| Acqua |
| Acqua Restaurant |
| Acqua Santa |
| Acquista Trattoria |
| Acquolina Catering |
| results = restaurants.find({ "cuisine" : "Italian"}, limit=5, sort={"name": pymongo.ASCENDING}, skip=10) |
|
| async for restaurant in results: |
| print(restaurant["name"]) |
| Acqua |
| Acqua Restaurant |
| Acqua Santa |
| Acquista Trattoria |
| Acquolina Catering |
Para obtener más información sobre cómo especificar una consulta, consulte Especificar una consulta.
Para más información sobre cómo recuperar documentos, visita Buscar documentos.
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: