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 do driver Java Reactive Streams fornecem.

O driver Java Reactive Streams inclui classes de construtores para operações CRUD e a API de aggregation. Os métodos utilitários estáticos permitem criar queries e outros documentos com mais eficiência.

Ao usar classes de construtores, você aproveita as seguintes funcionalidades:

  • O compilador Java para encontrar erros durante o desenvolvimento

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

As classes Builder permitem que o compilador Java e o IDE capturem erros, como operadores com erros ortográficos ou parâmetros ausentes no início. Se você usar o shell do MongoDB ou o Java simples, escreverá operadores como strings e não obterá nenhuma indicação visual de um problema, o que envia esses erros para o tempo de execução em vez de compilar.

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 seguinte código 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();