Visão geral
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.
Por que usar Construtores?
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.
Cenário de Exemplo
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 que29
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 )
Usando o MongoDB Shell
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 })
Sem usar construtores
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.
Usando os Construtores
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();