Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /
/ / /

Utilice desarrolladores con Clases de datos

Importante

Las funcionalidades descritas en esta página están disponibles solo en la versión del driver Kotlin 5.3 o posterior.

En esta guía, puedes aprender cómo usar las propiedades de tu clase de datos directamente con las clases de desarrolladores disponibles en el driver de 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 ofrece un número limitado de ejemplos de código para demostrar esta funcionalidad. Para ver ejemplos de todas las clases de desarrolladores, consulte la desarrolladores guides.

Para implementar esta funcionalidad, se debe agregar el/la mongodb-driver-kotlin-extensions dependencia a tu lista de dependencias.

Tip

Lista de Materiales

Recomendamos agregar el programa de materiales del driver JVM (BOM) a tu aplicación para gestionar las versiones de los artefactos del driver. Esto remueve la necesidad de especificar una versión para cualquier paquete individual cubierto por el BOM, lo que simplifica la gestión de dependencias. Para obtener más información, consulte el paso Agregar la factura de materiales del driver 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 gestores de paquetes:

Si usas Gradle para gestionar tus dependencias, añade lo siguiente a tu lista de dependencias de build.gradle.kts:

build.gradle.kts
implementation("org.mongodb:mongodb-driver-kotlin-extensions")

Si usas Maven para gestionar tus dependencias, añade lo siguiente a tu lista de dependencias pom.xml:

pom.xml
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongodb-driver-kotlin-extensions</artifactId>
</dependency>

Después de instalar la dependencia de extensiones, puedes utilizar los métodos de extensión importando clases y métodos desde la ruta com.mongodb.kotlin.client.model. Puedes combinar el uso de estos métodos y los métodos estándar del generador en la misma aplicación, como se muestra en el ejemplo de Agregados en esta guía.

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 constructora del paquete de extensiones.

Tip

Anotaciones de clases de datos

Cuando uses los métodos de clase del constructor de extensiones para las clases de datos, los métodos respetarán tus anotaciones de clase de datos de los paquetes bson-kotlin y bson-kotlinx. Para aprender más sobre las anotaciones, consulte la sección Especificar la Conversión de Componentes Usando Anotaciones de la guía Formato de Datos de Documento: Clases de datos y la sección Anotar clases de datos en la guía Serialización de Kotlin.

Los ejemplos de esta sección utilizan documentos de la colección students que describen a alumnos en un colegio. Los documentos en la colección students están modelados por la siguiente clase de datos de Kotlin:

data class Student(
val name: String,
val teachers: List<String>,
val gradeAverage: Double
)

Puede utilizar ayudantes de la clase Filters desarrolladores para consultar las propiedades de la clase de datos. Para **aprender** más sobre esta clase, consulte la guía Filtros **desarrolladores**.

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

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 usar 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)

Puedes usar los asistentes de la clase "desarrolladores" de Projections para crear proyecciones para las propiedades de la clase de datos. Para obtener más información sobre esta clase, consulta la guía Projections desarrolladores.

El siguiente código muestra cómo utilizar los métodos de extensión de 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)

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 tipos de 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)

Puedes utilizar los asistentes de la clase Updates desarrolladores para realizar actualizaciones utilizando las propiedades de tu clase de datos. Para obtener más información sobre esta clase, consulta la guía Actualizaciones de desarrolladores.

El siguiente código muestra cómo utilizar los métodos de extensión Sorts para crear diferentes tipos de 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)

Se pueden usar los asistentes de las clases de desarrolladores Aggregates y Accumulators para realizar agregaciones mediante las propiedades de la clase de datos. Para aprender más sobre estas clases, consulte la guía desarrolladores de agregados.

El siguiente código muestra cómo utilizar los métodos de extensión Accumulators y los métodos asistentes 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)

Volver

Update

En esta página