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 de constructores del controlador Kotlin de MongoDB.
El controlador Kotlin proporciona clases para simplificar el proceso de uso de las operaciones CRUD y la API de Agregación para los desarrolladores. Los métodos de utilidad estáticos permiten crear consultas de forma más eficiente.
¿Por qué utilizar Builders?
Al utilizar la clase de constructores, aprovechas el poder de:
El compilador Kotlin y el IDE para encontrar errores durante el desarrollo
El IDE para descubrimiento y finalización de código
Cuando se utilizan desarrolladores, el compilador de Kotlin y el IDE detectan errores como operadores mal escritos a tiempo. Cuando se usa la shell de MongoDB o Kotlin simple, se guardan operadores como cadenas y no se obtiene una indicación visual de un problema, lo que hace que estos errores se lleven a tiempo de ejecución en lugar de a tiempo de compilación.
Con las clases desarrolladoras, se guardan los operadores como métodos. El IDE subraya instantáneamente y muestra una barra roja a la derecha para indicar que algo anda mal. Mientras se desarrolla, el IDE también muestra los métodos disponibles. Completa automáticamente tu código con parámetros temporales una vez que selecciones el método a utilizar.
Scenario
Imaginemos que queremos enviar un correo electrónico de marketing a todos los usuarios de nuestra users
Colección con los siguientes criterios:
Usuarios que se identifican con el género
femaleUsuarios mayores de
29
Solo queremos su dirección de correo electrónico, así que nos aseguraremos de que nuestra query no devuelva datos por los que pagamos costos de ancho de banda pero no necesitamos.
Los documentos de la colección users se modelan con la siguiente clase de datos en nuestra aplicación:
data class User( val id: BsonObjectId = BsonObjectId(), val gender: String, val age: Int, val email: String, )
Uso del shell de MongoDB
collection.find({ "gender": "female", "age" : { "$gt": 29 }}, { "_id": 0, "email": 1 })
Sin usar constructores
data class Results(val email: String) val filter = Document().append("gender", "female").append("age", Document().append("\$gt", 29)) val projection = Document().append("_id", 0).append("email", 1) val results = collection.find<Results>(filter).projection(projection)
Uso de constructores
import com.mongodb.client.model.Filters import com.mongodb.client.model.Projections
data class Results(val email: String) val filter = Filters.and(Filters.eq(User::gender.name, "female"), Filters.gt(User::age.name, 29)) val projection = Projections.fields(Projections.excludeId(), Projections.include("email")) val results = collection.find<Results>(filter).projection(projection)
Constructores disponibles
Agregados para construcción de tuberías de agregación.
Filtros para crear filtros de query.
Índices para crear claves de índice.
Proyecciones para la creación de proyecciones.
Ordena para construir criterios de ordenación.
Actualizaciones para actualizaciones de edificios.