Overview
Esta sección incluye guías sobre cómo utilizar cada uno de los constructores disponibles y demuestra la utilidad que proporcionan las clases constructoras del controlador Java Reactive Streams.
El controlador Java Reactive Streams incluye clases constructoras para operaciones CRUD y la API de agregación. Los métodos de utilidad estáticos permiten construir consultas y otros documentos de forma más eficiente.
¿Por qué utilizar desarrolladores?
Al utilizar clases constructoras, se aprovechan las siguientes características:
El compilador de Java para encontrar errores durante el desarrollo
El IDE para el descubrimiento y la finalización de código
Las clases Builder permiten que el compilador de Java y el IDE detecten errores, como operadores mal escritos o parámetros faltantes, desde el principio. Si en cambio usa la consola de MongoDB o Java estándar, escribe los operadores como cadenas de texto y no obtiene ninguna indicación visual del problema, lo que provoca que estos errores se produzcan en tiempo de ejecución en lugar de en tiempo de compilación.
Al utilizar clases constructoras, puedes escribir operadores como métodos, de modo que tu IDE indique instantáneamente si tu código contiene errores. Mientras desarrollas, tu IDE también puede mostrarte métodos que puedes usar, y puede completar tu código con parámetros de marcador de posición.
Escenario de ejemplo
Supón que quieres enviar un correo electrónico de marketing a todos los usuarios de la colección users que cumplan con los siguientes requisitos:
Usuarios en los que el valor del campo
genderes"female"Usuarios en los que el valor del campo
agees mayor que29
También necesitas que tu query devuelva solo sus direcciones de correo electrónico.
Los documentos de la colección users se modelan mediante la siguiente clase:
record User( @BsonId ObjectId id, String gender, int age, String email )
Usar el MongoDB Shell
El siguiente código proporciona el comando que usted usa en el MongoDB Shell para realizar la query:
collection.find({ "gender": "female", "age" : { "$gt": 29 }}, { "_id": 0, "email": 1 })
Sin usar desarrolladores
El siguiente código proporciona la operación de búsqueda que se crea sin constructores en el controlador 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();
En este caso, podrías incluir fácilmente un error al escribir el operador "\$gt" en el filtro, pero tu IDE solo devuelve el error relevante en tiempo de ejecución.
Usar desarrolladores
El siguiente código proporciona la operación de búsqueda que se crea utilizando constructores en el controlador 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();
Desarrolladores disponibles
Agregados para la construcción de tuberías de agregación
Filtros para la creación de filtros de consulta
Índices para crear claves de índice
Proyecciones para proyecciones de edificios
Métodos para construir criterios de ordenación
Actualizaciones para actualizaciones de edificios