Overview
En esta guía, puede aprender a utilizar las propiedades de su clase de datos directamente con las clases de generador disponibles en el controlador Kotlin.
El controlador Kotlin implementa extensiones que permiten referenciar las propiedades de la clase de datos al usar métodos de compilación en lugar de nombres de campo de cadena. De esta manera, se puede estructurar el código para que sea más seguro y mejorar la interoperabilidad de las aplicaciones con Kotlin.
La biblioteca de extensiones también permite crear consultas, actualizar documentos y escribir otras sentencias mediante notación infija. Para obtener más información sobre esta notación, consulte Notación infija en la documentación de referencia de Kotlin.
Nota
Esta página proporciona un número limitado de ejemplos de código para demostrar esta funcionalidad. Para ver ejemplos de todas las clases del generador, consulte Guías de construcción.
Agregue extensiones de Kotlin a su proyecto
Para implementar esta funcionalidad, debe agregar el
mongodb-driver-kotlin-extensions Dependencia a su lista de dependencias.
Tip
Lista de materiales
Recomendamos agregar la lista de materiales (BOM) del controlador JVM a su aplicación para administrar las versiones de los artefactos del controlador. Esto elimina la necesidad de especificar una versión para cada paquete individual cubierto por la BOM, lo que simplifica la gestión de dependencias. Para obtener más información, consulte el paso "Agregar la lista de materiales del controlador" de la Guía de inicio rápido.
Seleccione una de las siguientes pestañas para ver cómo agregar la dependencia de extensión a su proyecto mediante el uso de Gradle y Maven administradores de paquetes:
Si está utilizando Gradle para administrar sus dependencias, agregue lo siguiente a su build.gradle.kts lista de dependencias:
implementation("org.mongodb:mongodb-driver-kotlin-extensions")
Si está utilizando Maven para administrar sus dependencias, agregue lo siguiente a su pom.xml lista de dependencias:
<dependency> <groupId>org.mongodb</groupId> <artifactId>mongodb-driver-kotlin-extensions</artifactId> </dependency>
Después de instalar la dependencia de extensiones, puede usar los métodos de extensión importando clases y métodos desde la com.mongodb.kotlin.client.model ruta. Puede combinar el uso de estos métodos con los métodos estándar del generador en la misma aplicación, como se muestra en el ejemplo de Agregados de esta guía.
Ejemplos de constructores
Esta sección contiene ejemplos que demuestran cómo utilizar las propiedades de la clase de datos directamente con los métodos de la clase generadora del paquete de extensiones.
Tip
Anotaciones de clases de datos
Al usar las clases de datos de los métodos de la clase del generador de extensiones, estos respetan las anotaciones de la clase de datos de los bson-kotlin bson-kotlinx paquetes y. Para obtener más información sobre las anotaciones, consulte la sección "Especificar la conversión de componentes mediante anotaciones" de la guía "Formato de datos del documento: Clases de datos" y la sección "Anotar clases de datos" de la guía "Serialización de Kotlin".
Datos de muestra
Los ejemplos de esta sección utilizan documentos de la colección students que describen a los estudiantes de una escuela. Los documentos de la colección students se modelan mediante la siguiente clase de datos de Kotlin:
data class Student( val name: String, val teachers: List<String>, val gradeAverage: Double )
Filtros
Puede usar ayudantes de la Filters clase de constructores para consultar las propiedades de la clase de datos. Para obtener más información sobre esta clase, consulte la guía de constructores de filtros.
El siguiente código muestra diferentes formas de utilizar métodos de extensión Filters para ejecutar queries en la clase de datos Student:
import com.mongodb.kotlin.client.model.Filters.eq import com.mongodb.kotlin.client.model.Filters.all
val student = Student( "Sandra Nook", listOf("Alvarez", "Gruber"), 85.7 ) // Equivalent equality queries Student::name.eq(student.name) eq(Student::name, student.name) Student::name eq student.name // Infix notation // Equivalent array queries all(Student::teachers, student.teachers) Student::teachers.all(student.teachers) Student::teachers all student.teachers // Infix notation
Indexes
Puede usar ayudantes de la Indexes clase de constructores para crear índices en las propiedades de la clase de datos. Para obtener más información sobre esta clase, consulte la guía de constructores de índices.
El siguiente código muestra diferentes formas de utilizar los métodos de extensión Indexes para crear índices en la clase de datos Student:
import com.mongodb.kotlin.client.model.Indexes.ascending import com.mongodb.kotlin.client.model.Indexes.descending
val ascendingIdx = Indexes.ascending(Student::name) val descendingIdx = Indexes.descending(Student::teachers) val ascIdxName = collection.createIndex(ascendingIdx) val descIdxName = collection.createIndex(descendingIdx)
Proyecciones
Puede usar ayudantes de la Projections clase de constructores para crear proyecciones para las propiedades de la clase de datos. Para obtener más información sobre esta clase, consulte la guía de constructores de proyecciones.
El siguiente código muestra cómo utilizar los métodos de extensión Projections para crear una proyección en la clase de datos Student:
import com.mongodb.kotlin.client.model.Projections.excludeId import com.mongodb.kotlin.client.model.Projections.fields import com.mongodb.kotlin.client.model.Projections.include
val combinedProj = fields( include(Student::name, Student::gradeAverage), excludeId() ) collection.find().projection(combinedProj)
Ordena
Puede usar ayudantes de la Sorts clase de constructores para ordenar según las propiedades de su clase de datos. Para obtener más información sobre esta clase, consulte la guía de constructores de ordenamiento.
El siguiente código muestra cómo utilizar los métodos de extensión Sorts para crear diferentes ordenaciones en la clase de datos Student:
import com.mongodb.client.model.Sorts.orderBy import com.mongodb.kotlin.client.model.Sorts
val sort = orderBy( Sorts.descending(Student::gradeAverage), Sorts.ascending(Student::name) ) collection.find().sort(sort)
Updates
Puede usar ayudantes de la Updates clase de constructores para realizar actualizaciones mediante las propiedades de su clase de datos. Para obtener más información sobre esta clase, consulte la guía de constructores de actualizaciones.
El siguiente código muestra cómo utilizar los métodos de extensión Sorts para crear diferentes ordenaciones en la clase de datos Student:
import com.mongodb.kotlin.client.model.Filters.gte import com.mongodb.kotlin.client.model.Updates.addToSet import com.mongodb.kotlin.client.model.Updates.combine import com.mongodb.kotlin.client.model.Updates.max
val filter = Student::gradeAverage gte 85.0 val update = combine( addToSet(Student::teachers, "Soto"), Student::gradeAverage.max(90.0) ) collection.updateMany(filter, update)
Agregados
Puede usar ayudantes de las Aggregates Accumulators clases de constructor y para realizar agregaciones mediante las propiedades de la clase de datos. Para obtener más información sobre estas clases, consulte la guía de constructores de agregaciones.
El siguiente código muestra cómo utilizar los métodos de extensión Accumulators y los métodos auxiliares Aggregates para realizar una agregación en la clase de datos Student:
import com.mongodb.client.model.Aggregates.group import com.mongodb.client.model.Aggregates.limit import com.mongodb.client.model.Aggregates.sort import com.mongodb.kotlin.client.model.Accumulators.avg
// Data class to store aggregation result data class Summary ( val average: Double ) val pipeline = listOf( // Sorts grades from high to low sort(Sorts.descending(Student::gradeAverage)), // Selects the top 3 students limit(3), // Calculates the average of their grades and stores value in a Summary instance group(null, avg(Summary::average, "\$${Student::gradeAverage.name}")) ) val result = collection.aggregate<Summary>(pipeline)