Menu Docs
Página inicial do Docs
/ / /
Driver de fluxos reativos do Java
/

Especifique documentos a serem devolvidos

Nesta página

  • Visão geral
  • Dados de amostra
  • Limite
  • Sort
  • Ignorar
  • Combinar Limite, Classificar e Ignorar
  • Informações adicionais
  • Documentação da API

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 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 .

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.

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

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
...

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.

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 .

Para saber mais sobre qualquer um dos métodos ou tipos discutidos neste guia, consulte a seguinte documentação da API:

Voltar

Especifique campos para retornar