Conozca las novedades en:
Novedades de la versión 5.3
La versión del controlador 5.3 incluye las siguientes nuevas características, mejoras y correcciones:
Importante: La próxima versión menor dejará de ser compatible con la versión de MongoDB Server 4.0 y aumentará la versión mínima compatible 4.2 a. Recomendamos realizar cambios en su aplicación para adaptarla a los cambios importantes. Consulte la sección Notas de la versión en el manual de MongoDB Server para obtener más información sobre la actualización.
Añade el
BinaryVectorClase para implementar el subtipo binario BSON 9 para el almacenamiento y la recuperación de vectores. Esta clase proporciona un almacenamiento de valores más eficaz que una lista de instanciasDouble. Puede crear los siguientes tipos de vectores según el tipo de elementos que contenga:Int8BinaryVector: Vector de enteros con signo de 8bitsFloat32BinaryVector: Vector de números de punto flotantePackedBitBinaryVector: Vector binario cuantizado (En beta y sujeto a cambios antes de estar disponible para el público en general)
Para obtener más información sobre esta función, consulte Cuantización vectorial en la documentación de Atlas. Para saber cómo usar este tipo al usar la función de búsqueda vectorial de MongoDB, consulte Guíade búsqueda vectorial de MongoDB.
Elimina la equidad explícita de la implementación del grupo de conexiones. Este cambio podría contribuir a un mejor rendimiento al usar una instancia
MongoClienten varios subprocesos de la aplicación. Sin embargo, este cambio podría causar una mayor latencia de cola.Añade una opción de ordenación a los
updateOne()replaceOne()métodos y. Este cambio también permite configurar una opción de ordenación al crearReplaceOneModelUpdateOneModelinstancias y. Para obtener más información, consulte las guías Actualizar documentos y Operaciones masivas.
Compatibilidad con el uso de métodos de clase de constructores directamente con propiedades de clase de datos. Para obtener más información, consulte la guía "Usar constructores con clases de datos". Esta funcionalidad es compatible con el paquete de extensiones del controlador Kotlin publicado con esta versión.
Implementa una API de escritura masiva de cliente que permite realizar operaciones de escritura en múltiples bases de datos y colecciones en la misma llamada. Para obtener más información sobre esta función, consulte la sección "Escritura masiva de cliente" de la guía "Operaciones masivas".
Novedades de la versión 5.2
Importante
Eliminación del soporte para el servidor MongoDB 3.6
El controlador Kotlin v5.2 elimina la 3.6 compatibilidadcon el servidor MongoDB. Para obtener más información sobre las versiones compatibles del servidor, consulte Compatibilidad.
La versión del controlador 5.2 incluye las siguientes nuevas características, mejoras y correcciones:
Permite configurar un tiempo de espera para operaciones del cliente (CSOT). Esta función permite configurar un tiempo de espera único en la
MongoClientinstancia que se aplica a todas las operaciones realizadas con ese cliente. Para obtener más información, consulte la guía "Limitar el tiempo de ejecución del servidor".Si, y solo si, la función CSOT está habilitada, el controlador ignora las siguientes opciones de tiempo de espera:
waitQueueTimeoutMSsocketTimeoutMSwTimeoutMSmaxTimeMSmaxCommitTimeMS
Importante
Característica experimental
CSOT es una función experimental y aún no está disponible para producción. Esta función es opcional en la versión actual y las opciones de tiempo de espera existentes siguen funcionando.
Añade la
SearchIndexTypeclase, que se puede pasar al construir unaSearchIndexModelinstancia. Este cambio permite especificar el tipo de índice al crear un índice de búsqueda Atlas o de búsqueda vectorial. Para obtener más información, consulte Búsqueda MongoDB e Índices de búsqueda vectorial MongoDB en la guía de índices.Delega la implementación de los algoritmos que implementan los mecanismos de autenticación
SCRAM-SHA-1ySCRAM-SHA-256al proveedor JCA configurado. Este cambio significa que su aplicación puede usar un proveedor JCA configurado compatible con FIPS para proporcionar un mayor nivel de seguridad.Se revisa el control de versiones de la dependencia mongodb-crypt para que coincida con el de los controladores de JVM. Las futuras versiones de
mongodb-cryptse publicarán junto con el controlador y compartirán el mismo número de versión. Debe actualizar sumongodb-cryptdependencia a5 20 la versión.. al actualizar su controlador para esta versión. Para obtener más información, consulte la guía de cifrado en uso.Mejoras de rendimiento gracias a la implementación de criptografía nativa en todas las plataformas compatibles. La siguiente lista describe las acciones necesarias para implementar esta mejora según el sistema operativo:
Windows: Actualice su
mongodb-cryptversión a5.2.0 v.Mac: Actualice su
mongodb-cryptversión a5.2.0 v.Linux: Instale
libmongocrypt.sodirectamente en el sistema de archivos, en lugar de usar el archivo incluido en el archivomongodb-cryptJAR. Puede encontrar instrucciones para instalarlibmongocrypten Linux en el manual del servidor. Si usa un gestor de paquetes paralibmongocryptinstalar, Java Native Access (JNA) lo encontrará allí sin necesidad de configuración adicional. Como alternativa, puede especificar la ruta de búsqueda configurando laLD_LIBRARY_PATHvariable de entorno con la ruta del archivo dellibmongocryptpaquete.Recomendamos la instalación directa porque la biblioteca compartida incluida no se vincula con OpenSSL debido a la posibilidad de incompatibilidades binarias de OpenSSL.
La carga de bibliotecas compartidas la gestiona JNA. Puede consultar las reglas para el orden de búsqueda de la carga de bibliotecas en la documentación de la clase NativeLibrary.
Corrige un problema que causaba que los métodos
InsertOneResult.getInsertedId()yInsertManyResult.getInsertedIds()devolvieran identificadores de documentos incorrectos en algunas situaciones. Este cambio se aplica retroactivamente al driver de Kotlin v5.1.4 y v4.11.4.Cuando una operación de clúster fragmentado no es exitosa, el controlador evita seleccionar el mismo servidor
mongospara los intentos de reintento de la operación si hay otros servidoresmongosdisponibles.Añade los metadatos de accesibilidad necesarios cuando la aplicación utiliza la imagen nativa de GraalVM. Estos metadatos eliminan la necesidad de recopilarlos al usar las bibliotecas de controladores. Para obtener más información, consulte Metadatos de Accesibilidad en la documentación de GraalVM.
Este cambio no agrega las
libjnidispatchlibmongocryptentradas de recursos y, ya que agregar entradas para todas las plataformas compatibles (destinos) afecta significativamente el tamaño de los ejecutables nativos generados con la imagen nativa de GraalVM. Consulte este archivo resource-config.json de ejemplo en el repositorio de GitHub del controlador para ver cómo especificar estas entradas explícitamente si su aplicación depende de laorg.mongodb:mongodb-cryptbiblioteca.Permite la búsqueda de vectores exactos al extender la API
VectorSearchOptionspara introducir los siguientes subtipos de opciones específicas:ExactVectorSearchOptions:Utilice este tipo de opciones para habilitar una coincidencia precisa, garantizando que los resultados sean los vectores más cercanos a un vector de consulta determinado.ApproximateVectorSearchOptionsUtiliza este tipo de opción para habilitar búsquedas que podrían no devolver los vectores más cercanos exactos. Puedes enviar un parámetronumCandidatesal instanciar este tipo para especificar la cantidad de vecinos más cercanos a considerar.
Para obtener más información sobre el uso de la función de búsqueda vectorial de MongoDB, consulte Búsqueda vectorial de MongoDB en la guía Generadores de agregados.
Añade compatibilidad con serializadores de la
kotlinx-datetimebiblioteca, que permiten asignar tipos de fecha y hora de Kotlin a BSON como los tipos esperados, en lugar de cadenas. Para obtener más información, consulta la sección "Serializar fechas y horas" de la guía de serialización de Kotlin.Admite la serialización de valores JsonElement. Para trabajar con el
JsonElementtipo, debe agregar lakotlinx-serialization-jsonbiblioteca como dependencia en su aplicación.
Novedades en 5.1.3
La versión del parche del controlador 5.1.3 incluye los siguientes cambios:
Corrige un problema que podría provocar errores de afirmación al utilizar tipos
Cursor.
Novedades en 5.1.2
La versión del parche del controlador 5.1.2 incluye los siguientes cambios:
Compatibilidad con la codificación de clases de datos Kotlin con tipos de parámetros genéricos que aceptan valores NULL. Por ejemplo, puede codificar la clase
Containeren el siguiente código:data class Box<T>( val boxed: T ) data class Container( val box: Box<String?> )
Novedades en 5.1.1
La versión del parche del controlador 5.1.1 incluye los siguientes cambios:
Al utilizar el
MONGODB-OIDCmecanismo de autenticación, no debe incluir comas en el valor de laauthMechanismPropertiescadena de conexión. Para obtener más información sobre este comportamiento, consulte la sección MONGODB-OIDC de la guía de autenticación empresarial.
Novedades de la versión 5.1
Advertencia
Desusos en esta versión
Para evitar cambios importantes en futuras versiones importantes del controlador, reemplace cualquier código de aplicación que dependa de elementos de programa obsoletos.
Esta sección incluye la siguiente información:
Desusos en 5.1
La compatibilidad con el servidor MongoDB v3.6 está obsoleta y se eliminará en la próxima versión del controlador. Para saber cómo actualizar su implementación del servidor MongoDB, consulte las Notas de la versión en el manual del servidor MongoDB.
Mejoras en 5.1
Pruebas internas de la tecnología de imagen nativa GraalVM. Estas pruebas implican compilar aplicaciones nativas utilizando la herramienta GraalVM native-image.
Compatibilidad mejorada con el
MONGODB-OIDCmecanismo de autenticación. Para obtener más información sobre OIDC, consulte la sección OIDC (Federación de Identidad de Carga de Trabajo) de la guía Mecanismos de Autenticación Empresarial.Se solucionó un problema por el cual las operaciones utilizaban el códec incorrecto al usar una instancia polimórfica
MongoCollection. Esto garantiza que la información del discriminador no se pierda al usarbson-kotlinx.Corrige un problema en el cual el discriminador de clase era el primer campo durante la decodificación, lo que generaba errores de tipo de campo al usar una instancia polimórfica
MongoCollection.
Nuevas funciones en 5.1
Compatibilidad con serialización polimórfica. Para obtener más información, consulte la sección "Serialización polimórfica" de la guía de serialización de Kotlin.
Se introduce la
serverMonitoringModeopción de URI de conexión. Para obtener más información,consulte la guía de opciones de conexión.
Novedades de la versión 5.0
Las nuevas características de la versión 5.0 del controlador incluyen:
El constructor
KotlinSerializerCodecProviderahora acepta objetosserializersModuleybsonConfiguration:KotlinSerializerCodec.create(clazz.kotlin, serializersModule=serializersModule, bsonConfiguration=bsonConfiguration) Esto hace que sea más fácil personalizar su configuración.
Corrige un error de reflexión de Kotlin que provocaba el borrado del tipo de contenedor.
Novedades de la versión 4.11
Esta sección incluye la siguiente información:
Desusos en la versión 4.11
Advertencia
Desusos en esta versión
Para evitar cambios importantes en futuras versiones importantes del controlador, reemplace cualquier código de aplicación que dependa de métodos y tipos obsoletos.
La versión 4.11 del controlador deja obsoletos los siguientes elementos:
Los siguientes métodos relacionados con direcciones de red están obsoletos y se eliminarán en la versión 5.0:
Los métodos ServerAddress
getSocketAddress()getSocketAddresses()y.En lugar de
getSocketAddress(), utilice el método de instanciagetByName()dejava.net.InetAddress.En lugar de
getSocketAddresses(), utilice el método de instanciagetAllByName()dejava.net.InetAddress.El método UnixServerAddress
getUnixSocketAddress().En lugar
getUnixSocketAddress()de, construya una instancia de.jnr.unixsocket.UnixSocketAddressPase la ruta completa del archivo de socket UNIX al constructor. Por defecto, MongoDB crea un archivo de socket UNIX ubicado"/tmp/mongodb-27017.sock"en. Para obtener más informaciónUnixSocketAddresssobre, consulte la documentación de la API UnixSocketAddress.
Los siguientes métodos y tipos relacionados con la interfaz StreamFactory están obsoletos y su eliminación está programada para la 5 0versión.:
streamFactoryFactory()método deMongoClientSettings.BuildergetStreamFactoryFactory()método deMongoClientSettingsNettyStreamFactoryFactoryclaseNettyStreamFactoryclaseAsynchronousSocketChannelStreamFactoryclaseAsynchronousSocketChannelStreamFactoryFactoryclaseBufferProviderclaseSocketStreamFactoryclaseStreamclaseStreamFactoryclaseStreamFactoryFactoryclaseTlsChannelStreamFactoryFactoryclase
Si configura Netty utilizando
MongoClientSettings.Builder.streamFactoryFactory(), su código podría parecerse al siguiente:import com.mongodb.connection.netty.NettyStreamFactoryFactory; // ... MongoClientSettings settings = MongoClientSettings.builder() .streamFactoryFactory(NettyStreamFactoryFactory.builder().build()) .build(); Reemplace este código con TransportSettings.nettyBuilder() como se muestra en el siguiente ejemplo:
import com.mongodb.connection.TransportSettings; // ... MongoClientSettings settings = MongoClientSettings.builder() .transportSettings(TransportSettings.nettyBuilder().build()) .build();
Nuevas funciones en la versión 4.11
Las nuevas características de la versión 4.11 del controlador incluyen:
Soporte para conectarse a MongoDB mediante un proxy SOCKS5.
Se añadió el método
getSplitEvent()a la claseChangeStreamDocumentpara identificar fragmentos de un evento de flujo de cambios que superen los 16 MB. Debe usar la etapa de agregación$changeStreamSplitLargeEventen su flujo de cambios para gestionar eventos que superen los 16 MB.Se agregó un generador de etapa de agregación para
$vectorSearch.Se agregaron ayudantes para la gestión del índice de búsqueda de MongoDB.
Se actualizaron las versiones de dependencia de las bibliotecas de compresión Snappy y Zstd. Para obtener más información sobre las versiones actuales de dependencia, consulte Compresión de red.
Se agregaron métodos
getElapsedTime()a las siguientes clases para monitorear la duración de los eventos del grupo de conexiones:Compatibilidad con subprocesos virtuales de Java 21 y concurrencia estructurada. Se actualizaron los componentes internos del controlador para evitar la fijación innecesaria de subprocesos virtuales y preservar el estado de interrupción de un subproceso, ya que este último es importante para la concurrencia estructurada, donde se utiliza para la cancelación.
Para obtener más información sobre los hilos virtuales, consulte la propuesta de mejora de Hilos Virtuales del JDK. Para obtener más información sobre la concurrencia estructurada, consulte la propuesta de mejora de Concurrencia Estructurada del JDK.
Documentación de API actualizada para los siguientes tipos:
Novedades de la versión 4.10
Importante
A partir de la versión 4.10.1 del controlador de Kotlin, debe agregar la librería bson-kotlinx como una dependencia explícita para usar la librería kotlinx-serialization.
Soporte para el uso del lado del servidor de Kotlin, tanto para corrutinas como para aplicaciones sincrónicas.
Compatibilidad de códecs para clases de datos Kotlin.
Soporte para la librería
kotlinx.serialization