Para agentes de IA: um índice de documentação está disponível em https://www.mongodb.com/pt-br/docs/llms.txt — as versões de markdown de todas as páginas estão disponíveis anexando .md a qualquer caminho de URL.
Menu Docs

Construtores

Esta seção inclui guias sobre como usar cada um dos construtores disponíveis e demonstra a utilidade que as classes de construtores de drivers Java Reactive Streams fornecem.

O driver Java Reactive Streams inclui classes de construtores para operações CRUD e a API de agregação. Os métodos de utilitário estáticos permitem que você crie queries e outros documentos com mais eficiência.

Ao usar classes de construtores, você aproveita os seguintes recursos:

  • O compilador Java para encontrar erros durante o desenvolvimento

  • O IDE para descoberta e conclusão de código

As classes de construtores permitem que o compilador Java e o IDE detectem erros, como operadores com erros ortográficos ou parâmetros ausentes, logo no início. Se você usar o shell do MongoDB ou Java simples, você grava os operadores como strings e não recebe nenhum sinal visual de um problema, o que empurra esses erros para o tempo de execução em vez do tempo de compilação.

Ao usar classes de construtores, você pode escrever operadores como métodos, para que seu IDE indique instantaneamente se seu código tem erros. Durante o desenvolvimento, seu IDE também pode mostrar métodos que você pode usar e pode completar seu código com parâmetros de espaço reservado.

Suponha que você queira enviar um e-mail marketing para todos os usuários da coleção users que atendam aos seguintes critérios:

  • Usuários em que o valor do campo gender é "female"

  • Usuários em que o valor do campo age é maior que 29

Você também precisa que sua query retorne apenas os endereços de e-mail deles.

Os documentos na coleção users são modelados pela seguinte classe:

record User(
@BsonId ObjectId id,
String gender,
int age,
String email
)

O código a seguir fornece o comando que você usa na shell do MongoDB para executar a query:

collection.find({ "gender": "female", "age" : { "$gt": 29 }}, { "_id": 0, "email": 1 })

O código a seguir fornece a operação de localização que você cria sem construtores no driver Java Reactive Streams:

Bson filter = new Document().append("gender", "female").append("age", new Document().append("$gt", 29));
Bson projection = new Document().append("_id", 0).append("email", 1);
Flux.from(collection.find(filter).projection(projection))
.doOnNext(doc -> System.out.println(doc.toJson()))
.blockLast();

Nesse caso, você pode incluir facilmente um erro ao escrever o operador "\$gt" no filtro, mas seu IDE retorna o erro relevante somente no tempo de execução.

O código a seguir fornece a operação de localização que você cria usando construtores no driver Java Reactive Streams:

import static com.mongodb.client.model.Filters.*;
import static com.mongodb.client.model.Projections.*;
Bson filter = and(eq("gender", "female"), gt("age", 29));
Bson projection = fields(excludeId(), include("email"));
Flux.from(collection.find(filter).projection(projection))
.doOnNext(doc -> System.out.println(doc.toJson()))
.blockLast();