Neste guia, você pode aprender como especificar quais documentos retornar de uma operação de leitura usando os seguintes métodos:
limit()
: especifica o número máximo de documentos para retornar de uma query.
sort()
: especifica a ordem de classificação para os documentos devolvidos.
skip()
: especifica o número de documentos a ignorar antes de retornar os resultados da 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 tutorial Introdução ao PyMongo .
Para especificar o número máximo de documentos retornados de uma operação de leitura, chame o método limit()
.
O exemplo a seguir encontra todos os restaurantes que têm um valor de campo cuisine
de "Italian"
e limita os resultados a 5 documentos. Selecione a aba Synchronous ou Asynchronous para ver o código correspondente:
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 |
Você também pode limitar o número de documentos retornados especificando o parâmetro limit
em seu método find()
. Selecione a aba Synchronous ou Asynchronous para ver o código correspondente:
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 |
Dica
Os exemplos anteriores retornam os cinco primeiros documentos retornados pela query, sem uma ordem específica. A seção seguinte descreve como devolver os documentos em uma ordem de classificação especificada.
Para retornar documentos em uma ordem especificada, chame o método sort()
. O método sort()
utiliza dois parâmetros: o campo para classificar os resultados por e uma direção de classificação. Para especificar a direção de classificação, especifique pymongo.ASCENDING
ou pymongo.DESCENDING
. ASCENDING
classifica os valores do mais baixo para o mais alto e DESCENDING
os classifica do mais alto para o mais baixo. Se você não especificar nenhuma das direções, o método assumirá como padrão a classificação em ordem crescente.
O exemplo a seguir retorna todos os documentos com o valor cuisine
de "Italian"
, classificados em ordem crescente. Selecione a aba Synchronous ou Asynchronous para ver o código correspondente:
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 |
Você também pode classificar documentos especificando o parâmetro sort
em seu método find()
. O exemplo seguinte especifica o parâmetro sort
para retornar os resultados na mesma ordem do exemplo anterior. Selecione a aba Synchronous ou Asynchronous para ver o código correspondente:
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 ignorar um número específico de documentos antes de retornar os resultados da query, chame o método skip()
e passe o número de documentos a serem ignorados. O método skip()
ignora o número especificado de documentos nos resultados da query e retorna o restante.
O exemplo a seguir retorna todos os documentos que têm um valor de campo borough
de "Manhattan"
e ignora os primeiros 10 documentos. Selecione a aba Synchronous ou Asynchronous para ver o código correspondente:
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 |
... |
Você também pode ignorar documentos devolvidos usando o parâmetro skip
do método find()
. O exemplo a seguir especifica o mesmo skip que o exemplo anterior. Selecione a aba Synchronous ou Asynchronous para ver o código correspondente:
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 |
... |
Você pode combinar os métodos limit()
, sort()
e skip()
em uma única operação. Isso permite que você defina um número máximo de documentos classificados para retornar, ignorando um número específico de documentos antes de retornar.
O exemplo a seguir retorna documentos com o valor cuisine
de "Italian"
. Os resultados são classificados em ordem alfabética, ignorando os primeiros 10 documentos. Selecione a aba Synchronous ou Asynchronous para ver o código correspondente:
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 |
Observação
A ordem em que você chama esses métodos não altera os documentos que são devolvidos. O driver reordena automaticamente as chamadas para executar primeiro as operações de classificação e skip e, em seguida, a operação de limite.
Você também pode limitar, classificar e ignorar resultados especificando-os como parâmetros no método find()
. O exemplo a seguir especifica a mesma query do exemplo anterior. Selecione a aba Synchronous ou Asynchronous para ver o código correspondente:
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 obter mais informações sobre como especificar uma query, consulte Especificar uma query.
Para obter mais informações sobre como recuperar documentos, consulte Localizar documentos.
Para saber mais sobre qualquer um dos métodos ou tipos discutidos neste guia, consulte a seguinte documentação da API: