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 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.
Por que usar Construtores?
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.
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 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.
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();
Construtores disponíveis
Agregados para a criação de pipelines de agregação
Filtros para criar filtros de query
Índices para criar chaves de índice
Projeções para projeções de construção
Classifica para construir critérios de classificação
Atualizações para atualizações de construções