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 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 Project 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: