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

Retrieve Data

Nesta página

  • Visão geral
  • Dados de amostra
  • Encontrar documentos
  • Encontrar um documento
  • Localizar vários documentos
  • Modificar comportamento de localização
  • Informações adicionais
  • Documentação da API

Neste guia, você pode aprender como usar o MongoDB Java Reactive Streams Driver para recuperar dados de uma coleção MongoDB usando operações de leitura.

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.

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 .

O driver Java Reactive Streams inclui um método para recuperar documentos de uma collection: find().

Este método usa um filtro de query e retorna um ou mais documentos correspondentes. Um filtro de query é um objeto que especifica os documentos que você deseja recuperar em sua query.

Para saber mais sobre filtros de query, consulte o guia Especificar uma query .

Para localizar um único documento em uma coleção, encadeie o método first() à sua chamada de método find() e passe um filtro de query para a chamada de método find() que especifica os critérios do documento que você deseja localizar. Se mais de um documento corresponder ao filtro de query, a construção find().first() retornará o primeiro documento correspondente dos resultados recuperados. Se nenhum documento corresponder ao filtro de query, a construção retornará None.

Dica

A construção find().first() é útil quando você sabe que há apenas um documento correspondente ou se está interessado apenas na primeira correspondência.

O exemplo a seguir usa a construção find().first() para localizar o primeiro documento em que o campo "cuisine" tem o valor "Bakery":

Publisher<Document> findDocPublisher = restaurants.find(
eq("cuisine", "Bakery")).first();
Mono.from(findDocPublisher)
.doOnNext(System.out::println)
.blockLast();

Dica

Ordem de classificação

Se você não especificar uma ordem de classificação, a construção find().first() retornará o primeiro documento em ordem natural no disco.

Para saber mais sobre classificação, consulte o guia Especificar Documentos para Devolver .

Para encontrar vários documentos em uma coleção, passe um filtro de queries para o método find() que especifica os critérios dos documentos que você deseja recuperar.

O exemplo seguinte utiliza o método find() para localizar todos os documentos onde o campo "cuisine" tem o valor "Spanish":

FindPublisher<Document> findDocPublisher = restaurants.find(
eq("cuisine", "Spanish"));
Flux.from(findDocPublisher)
.doOnNext(System.out::println)
.blockLast();

Observação

Localizar todos os documentos

Para encontrar todos os documentos em uma coleção, não passe parâmetros para o método find() :

Publisher<Document> findAllPublisher = restaurants.find();
Flux.from(findAllPublisher)
.doOnNext(System.out::println)
.blockLast();

Você pode modificar o comportamento do método find() encadeando outros métodos a ele. A tabela a seguir descreve os métodos comumente usados:

Argument
Descrição
batchSize(int batchSize)
Limits the number of documents to hold in a cursor at a given time. To learn more about cursors, see cursor in the MongoDB Server documentation.
collation(Collation collation)
Sets the collation options as an instance of the Collation class.
comment(String comment)
Attaches a string to the query. This can help you trace and interpret the operation in the server logs and in profile data. To learn more about query comments, see the $comment page.
hint(Bson hint)
Gets or sets the index to scan for documents. For more information, see the hint statement in the MongoDB Server manual.
maxTime(long maxTime, TimeUnit timeUnit)
Sets the maximum execution time on the server for this operation. If this time is exceeded, the Java Reactive Streams driver aborts the operation and raises an ExecutionTimeout.

O exemplo seguinte utiliza o método find() para localizar todos os documentos onde o campo "cuisine" tem o valor "Italian" e define um tempo máximo de execução de 10 segundos:

FindPublisher<Document> findDocPublisher = restaurants.find(
eq("cuisine", "Italian")).maxTime(10L, TimeUnit.SECONDS);
Flux.from(findDocPublisher)
.doOnNext(System.out::println)
.blockLast();

Para obter uma lista completa dos argumentos disponíveis, consulte a documentação da API para a FindPublisher interface .

Para saber mais sobre filtros de query, consulte o guia Especificar uma query .

Para obter exemplos de código executáveis de recuperação de documentos usando o driver Java Reactive Streams, consulte o guia Ler dados do MongoDB .

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

Voltar

Especificar uma query