Especifique documentos a serem devolvidos
Nesta página
Visão geral
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.
Dados de amostra
Os exemplos neste guia usam a collection sample_restaurants.restaurants
dos conjuntos de dados de amostra do Atlas. Para saber como criar um cluster gratuito do MongoDB Atlas e carregar os conjuntos de dados de amostra, consulte o Introdução ao PyMongo.
Limite
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 cuisine
valor de campo de "Italian"
e limita os resultados a 5 documentos:
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
Você também pode limitar o número de documentos devolvidos especificando o parâmetro limit
em seu método find()
:
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
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.
Sort
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:
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
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:
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
Ignorar
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:
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 ...
Você também pode ignorar documentos devolvidos usando o parâmetro skip
do método find()
. O exemplo a seguir especifica o mesmo salto do exemplo anterior:
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 ...
Combinar Limite, Classificar e Ignorar
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:
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
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:
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
Informações adicionais
Para obter mais informações sobre como especificar uma query, consulte Especificar uma query.
Para obter mais informações sobre como recuperar documentos, consulte Recuperar dados.
Documentação da API
Para saber mais sobre qualquer um dos métodos ou tipos discutidos neste guia, consulte a seguinte documentação da API: