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 MongoDB Atlas gratuito e carregar os conjuntos de dados de amostra, consulte Começar.
Importante
Biblioteca do Reator do Projeto
Este guia usa a biblioteca Project Reactor para consumir instâncias do Publisher retornadas pelos métodos de driver Java Reactive Streams. Para saber mais sobre a biblioteca do Projeto Reactor e como usá-la, consulte Introdução na documentação do Reactor. Para saber mais sobre como usamos os métodos da biblioteca do Project Reactor neste guia, consulte o guia Gravar dados no MongoDB.
Limite
Para especificar o número máximo de documentos retornados de uma operação de leitura, encadeie o método limit() a um método find() e passe o número de documentos que você deseja retornar.
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:
FindPublisher<Document> findPublisher = restaurants.find(                 eq("cuisine", "Italian")).limit(5); Flux.from(findPublisher)         .doOnNext(x -> System.out.println(x.getString("name")))         .blockLast(); 
Isle Of Capri Resturant Italian Arturo'S Italian Patsy'S Italian Restaurant Italian Piccola Venezia Italian Roadhouse Restaurant 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, encadeie o método sort() ao método find() . O método sort() utiliza o método de direção de classificação como parâmetro. Para especificar a direção de classificação, passe o método ascending() ou descending() para o método sort() . Em seguida, passe o valor de campo pelo qual você deseja classificar. O método ascending() classifica os valores do mais baixo para o mais alto, e o método descending() os classifica do mais alto para o mais baixo. Se você não especificar nenhuma das direções, o método sort retornará os resultados em ordem crescente.
O exemplo a seguir retorna todos os documentos com o valor de , classificado pelo campo cuisine name "Italian" ordem crescente:
FindPublisher<Document> findPublisher = restaurants.find(                 eq("cuisine", "Italian")).sort(ascending("name")); Flux.from(findPublisher)         .doOnNext(x -> System.out.println(x.getString("name")))         .blockLast(); 
(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 consulta, encadeie o método skip() ao método find() e passe o número de documentos a serem ignorados. O método skip() ignora o número especificado de documentos nos resultados da sua 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:
FindPublisher<Document> findPublisher = restaurants.find(                 eq("borough", "Manhattan")).skip(10); Flux.from(findPublisher)         .doOnNext(x -> System.out.println(x.getString("name")))         .blockLast(); 
Cafe Metro Lexler Deli Domino'S Pizza ... 
Combinar Limite, Classificar e Ignorar
Você pode combinar os métodos limit(), sort() e skip() em uma única operação encadeando-os. 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 5 documentos com um valor cuisine de "Italian". Os resultados são classificados em ordem crescente por valor de campo name , ignorando os primeiros 10 documentos.
FindPublisher<Document> findPublisher = restaurants.find(                 eq("cuisine", "Italian"))         .sort(ascending("name"))         .limit(5)         .skip(10); Flux.from(findPublisher)         .doOnNext(x -> System.out.println(x.getString("name")))         .blockLast(); 
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.
Informações adicionais
Para obter mais informações sobre como especificar uma query, consulte o guia Especificar uma query .
Para obter mais informações sobre a recuperação de documentos, consulte o guia 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: