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 querysort()
: especifica a ordem de classificação para os documentos devolvidosskip()
: especifica o número de documentos a ignorar antes de retornar os resultados da query
Dados de amostra
Os exemplos neste guia utilizam a coleção do restaurants
no banco de dados de dados do sample_restaurants
a partir 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 guia Iniciar com Atlas .
Os documentos nesta coleção são modelados pela seguinte classe de dados Kotlin :
data class Restaurant( val name: String, val borough: String, val cuisine: String )
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:
val results = collection .find(eq(Restaurant::cuisine.name, "Italian")) .limit(5) results.forEach { result -> println(result) }
Restaurant(name=Philadelphia Grille Express, borough=Brooklyn, cuisine=Italian) Restaurant(name=Isle Of Capri Resturant, borough=Manhattan, cuisine=Italian) Restaurant(name=Marchis Restaurant, borough=Manhattan, cuisine=Italian) Restaurant(name=Crystal Room, borough=Staten Island, cuisine=Italian) Restaurant(name=Forlinis Restaurant, borough=Manhattan, cuisine=Italian)
Dica
O exemplo anterior retorna os cinco primeiros documentos retornados pela query em ordem natural. 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 uma direção de classificação como um parâmetro. Para especificar a direção de classificação, use o método Sorts.ascending()
ou Sorts.descending()
. O método Sorts.ascending()
classifica os valores do mais baixo para o mais alto e o método Sorts.descending()
classifica os valores do mais alto para o mais baixo. Se você não especificar uma direção de classificação, o sort()
retornará os documentos em ordem crescente.
O exemplo a seguir retorna todos os documentos com um valor de campo cuisine
de "Italian"
, classificado pelo valor do campo name
em ordem crescente:
val results = collection .find(eq(Restaurant::cuisine.name, "Italian")) .sort(Sorts.ascending(Restaurant::name.name)) results.forEach { result -> println(result) }
Restaurant(name=(Lewis Drug Store) Locanda Vini E Olii, borough=Brooklyn, cuisine=Italian) Restaurant(name=101 Restaurant And Bar, borough=Brooklyn, cuisine=Italian) Restaurant(name=44 Sw Ristorante & Bar, borough=Manhattan, cuisine=Italian) Restaurant(name=900 Park, borough=Bronx, cuisine=Italian) Restaurant(name=A Voce, borough=Manhattan, cuisine=Italian) ...
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 cuisine
de "Italian"
e ignora os primeiros 10 documentos:
val results = collection .find(eq(Restaurant::cuisine.name, "Italian")) .skip(10) results.forEach { result -> println(result) }
Restaurant(name=San Pietro, borough=Manhattan, cuisine=Italian) Restaurant(name=Manetta's Ristorante, borough=Queens, cuisine=Italian) Restaurant(name=Salvi Restaurant, borough=Brooklyn, cuisine=Italian) Restaurant(name=Tommaso Restaurant, borough=Brooklyn, cuisine=Italian) Restaurant(name=Da Rosina Restaurant, borough=Manhattan, cuisine=Italian) ...
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 de campo cuisine
de "Italian"
. Os resultados são classificados em ordem alfabética, ignorando os primeiros 10 documentos e limitando os resultados a 5 documentos:
val results = collection .find(eq(Restaurant::cuisine.name, "Italian")) .sort(Sorts.ascending(Restaurant::name.name)) .skip(10) .limit(5) results.forEach { result -> println(result) }
Restaurant(name=Acqua, borough=Manhattan, cuisine=Italian) Restaurant(name=Acqua Restaurant, borough=Manhattan, cuisine=Italian) Restaurant(name=Acqua Santa, borough=Brooklyn, cuisine=Italian) Restaurant(name=Acquista Trattoria, borough=Queens, cuisine=Italian) Restaurant(name=Acquolina Catering, borough=Manhattan, cuisine=Italian)
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.
Informações adicionais
Para 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: