Aprenda sobre nuevas funcionalidades, mejoras y correcciones introducidas en las siguientes versiones del MongoDB Java Reactive Streams driver:
Novedades en 5.8
La versión del controlador 5.8 incluye los siguientes cambios, correcciones y funcionalidades:
Añade una API de constructor tipado para las definiciones del índice de búsqueda vectorial.
Añade soporte para la etapa de agregación
$rerank. Cuando esté conectado a un clúster de Atlas que ejecute MongoDB 8.3 o posterior, puedes usar el método constructorAggregates.rerank()para crear esta etapa.Agrega soporte para el operador
vectorSearchen una etapa de pipeline$search. Puedes usar el Método de construcciónSearchOperator.vectorSearch()para realizar una búsqueda vectorial de vecino más cercano aproximada (ANN, por sus siglas en inglés), oSearchOperator.vectorSearchExact()para una búsqueda de vecino más cercano exacta (ENN, por sus siglas en inglés). ElVectorSearchOperatordevuelto admite un métodofilter()para aplicar prefiltros léxicos.Añade soporte para configurar la fuente almacenada en las definiciones de índice de búsqueda vectorial utilizando el método
storedSource()en la claseVectorSearchIndexDefinition.Se agrega soporte para solicitar campos de origen almacenados en los resultados de
$vectorSearchusando el métodoreturnStoredSource()en la claseVectorSearchOptions.Optimiza el
RawBsonDocumentrendimiento de codificación y decodificación eliminando las asignaciones intermedias.Corrige un fallo en la resolución del paquete OSGi cuando Micrometer no está presente.
Agrega documentación Javadoc a las clases
MongodbObservationyMongodbObservationContext.Mejora la versión
libmongocrypta la 1.18.1.
Para aprender más sobre esta versión, consulta las Notas de la versión v5.8 en GitHub.
Novedades en la 5.7
La versión del controlador 5.7 incluye los siguientes cambios, correcciones y funcionalidades:
- Actualiza los métodos
commitTransaction()yabortTransaction()para que devuelvan publicadores fríos. Como resultado, estos métodos no se ejecutarán hasta que te suscribas al publicador retornado.
Importante: En una próxima actualización menor se retirará el soporte para la versión 4.2 de MongoDB Server y se elevará la versión mínima compatible a 4.4. Este cambio está alineado con los Cronogramas del ciclo de vida del software de MongoDB.
Recomendamos realizar cambios en tu aplicación para adaptarse a los cambios disruptivos. Para obtener más información sobre cómo actualizar su versión del servidor, consulte la sección Notas de la versión en el manual de MongoDB Server.
Añade soporte para Scala 3.
Agrega soporte de incrustación automática como parte de las API de búsqueda vectorial.
Agrega soporte de seguimiento de Micrometer/OpenTelemetry al controlador de reactive-streams e incluye mejoras generales en el soporte de Micrometer.
Agrega soporte de bucle asincrónico seguro para la pila con el patrón de trampolín para prevenir errores de Stack Overflow.
Mejora el manejo de los tiempos de espera en el lado del cliente para considerar mejor las variaciones en el tiempo de ida y vuelta (RTT), junto con diversas pequeñas mejoras relacionadas con los tiempos de espera.
Reutiliza
ConnectionSourcepara evitar una selección adicional de servidores.Restaura la ruta optimizada del códec para la codificación de
RawBsonDocument, corrigiendo una regresión en el rendimiento.Libera la conexión entre las respuestas vacías
getMoreenAsyncCommandCursor, evitando el agotamiento del pool de conexiones cuando los change streams inactivos alcanzanmaxPoolSize.El cliente de cifrado ahora utiliza una mayoría de
writeConcern.Maneja errores inesperados de fin de flujo desde KMS.
Corrige el
JsonBsonEncoderanálisis de los númerosJsonPrimitive, donde los números formateados científicamente se analizaban como Ints o Longs simples.Simplifica los nombres de los hilos de
ServerMonitory elimina el carácter=, que algunos sistemas de supervisión no pueden procesar.Corregir la decodificación BSON opcional de Kotlin.
Actualiza
libmongocrypta 1.17.3.Utiliza
ZstdInputStreamNoFinalizerpara la descompresión Zstandard.Actualiza Netty a la última versión.
Actualizar Snappy para las últimas correcciones de seguridad.
Actualiza JUnit 5 a la última versión.
Alinea el nivel de registro a advertencia al remover un servidor del clúster.
Novedades en la versión 5.6
La versión del controlador 5.6 incluye los siguientes cambios, correcciones y funcionalidades:
Agrega compatibilidad experimental para consultas de prefijo, sufijo y subcadenas en Queryable Encryption. Para obtener más información sobre QE, consulta encriptación en uso.
Nota
Funcionalidad Experimental
Las consultas de prefijos, sufijos y subcadenas con cifrado consultable (Queryable Encryption) son inestables y su seguridad no está garantizada hasta que estén generalmente disponibles (GA). Utilícelos solo en cargas de trabajo experimentales.
Añade un campo
nsTypea los objetosChangeStreamDocument. Este campo contiene el tipo de namespace (COLLECTION,TIMESERIESoVIEW) del evento de cambio.Agrega soporte experimental para la expiración de la operación en el lado del cliente (CSOT) para la autenticación OIDC.
Nota
Funcionalidad Experimental
La funcionalidad CSOT es experimental y podría cambiar en futuras versiones de driver.
Cuando
timeoutMSestá configurado para CSOT, el controlador ignora el valor de la configuración de conexión demaxWaitTime.Agrega un método
appendMetadata()a la claseMongoClient. Puedes utilizar este método para adjuntar metadatos a los metadatos de un cliente existente. El tamaño máximo de metadatos es 512 MB.Agrega un constructor público a la clase
RewrapManyDataKeyOptions.Fusiona las interfaces
AsyncReadOperationyAsyncWriteOperationen las interfacesReadOperationyWriteOperation. Puedes crear operaciones de lectura y guardar utilizando métodos constructores en la claseOperations.Obsoleta la constante
MongoNamespace.COMMAND_COLLECTION_NAME.Corrige un error que impedía la reautenticación OIDC dentro de una sesión.
Al serializar un POJO anotado con
@BsonDiscriminator, si lareadNamede la propiedad coincide con la clave de discriminador, el driver serializa el campo solo una vez.Después de llamar al método
next()otryNext()en una instancia deCommandCursorResult, el driver limpia la propiedadCommandCursorResult.resultspara liberar memoria.La clase
PojoBuilderHelpercrea modelos de propiedades que incluyen las propiedades de las clases abstractas e interfaces.El controlador publica y registra los siguientes eventos cuando la topología del clúster cambia:
ClusterOpeningEventPublicado cuando se abre la topologíaClusterDescriptionChangedEventSe publica cuando cambia la descripción de la topologíaClusterClosedEventPublicado cuando la topología se cierra
El driver lanza un/a
MongoStalePrimaryExceptioncuando el miembro primario del set de réplicas se queda obsoleto por una de las siguientes razones:Se elige o se descubre un nuevo miembro principal.
El valor del campo
electionIdosetVersionen el primario no coincide con los valores de estos campos en los otros miembros del set de réplicas.
Para obtener más información sobre los sets de réplicas, consulte Replicación en el manual del MongoDB Server.
Novedades en 5.5.1
El 5.5.1 La versión de parchado del driver incluye los siguientes cambios:
- Corrige un problema donde la reautenticación OIDC fallaba cuando era activada por una operación ejecutada en una sesión, incluyendo operaciones ejecutadas en una transacción.
Novedades en la versión 5.5
Importante
Eliminación del soporte para MongoDB Server 4.0
Java Reactive Streams driver v5.5 elimina el soporte para MongoDB Server 4.0. Para aprender más sobre las versiones compatibles del servidor, consulte Compatibilidad.
La versión del controlador 5.5 incluye los siguientes cambios, correcciones y funcionalidades:
- Agrega soporte para la opción
connectTimeoutMSal usar la capa de transporte Java Reactive Streams TLS por defecto.
- Introduce mejoras de rendimiento que se reflejan en los benchmarks de rendimiento del controlador. Para ver los resultados de las pruebas de referencia de rendimiento, vea la siguiente sección Mejoras de rendimiento.
Mejoras en el rendimiento
Las tablas en esta sección muestran los resultados de las pruebas de rendimiento para el controlador Java síncrono. Las pruebas se realizaron en una implementación de MongoDB Server 8.0 con la siguiente configuración:
En funcionamiento en
localhostcon una latencia de red insignificante. En entornos con mayor latencia, es posible que observes mejoras de rendimiento menos significativas.Autenticación desactivada.
TLS deshabilitado.
Esperamos aumentos de rendimiento similares para todos los controladores Java de MongoDB porque comparten la API mejorada de driver-core.
Configuración estándar de transporte
La siguiente tabla muestra los resultados de las pruebas de rendimiento para la versión5.5 del controlador configurado con ajustes estándar de transporte. Cada fila incluye la funcionalidad evaluada, el porcentaje de mejora en el rendimiento y el z-score.
funcionalidad | Porcentaje de mejora | Puntaje Z |
|---|---|---|
Decodificación profunda de BSON | 19.44% | 5.4 |
Codificación BSON profunda | 102% | 22.8 |
Encontrar varios y vaciar el cursor | 25.08% | 13.72 |
Encontrar uno por ID | 2.7% | 3.16 |
Decodificación BSON plana | 31.2% | 9.38 |
Codificación BSON plana | 199.5% | 12.34 |
Decodificación completa de BSON | 16.5% | 7.23 |
Codificación BSON completa | 147.3% | 10.39 |
Importación de varios archivos JSON-LD | 21.8% | 8.21 |
Inserción masiva de clientes con documentos grandes | 91.3% | 24.44 |
Inserción en masa de colecciones con documentos grandes | 96.5% | 8.79 |
Inserción masiva con documentos grandes | 93.3% | 8.11 |
Inserción masiva con documentos pequeños | 39.3% | 5.72 |
Inserte uno con documentos grandes | 82.4% | 7.28 |
Inserción masiva de clientes con documentos pequeños | 49.5% | 17.99 |
Inserción masiva en colecciones con documentos pequeños | 47.8% | 6.44 |
Configuración de transporte de Netty
La siguiente tabla muestra los resultados de las pruebas de rendimiento para la v5.5 del controlador configurado con la configuración de transporte Netty. Cada fila incluye la funcionalidad probada, el porcentaje de mejora en el rendimiento, y el z-score.
funcionalidad | Porcentaje de mejora | Puntaje Z |
|---|---|---|
Encontrar varios y vaciar el cursor | 40.3% | 14.81 |
Encontrar uno por ID | 4.4% | 4.12 |
Importación de varios archivos JSON-LD | 16.9% | 3.77 |
Inserción masiva de clientes con documentos grandes | 54.8% | 14.49 |
Inserción en masa de colecciones con documentos grandes | 104.9% | 38.72 |
Inserción masiva con documentos grandes | 74.6% | 65.55 |
Inserte uno con documentos grandes | 66.6% | 58.65 |
Inserción masiva de clientes con documentos pequeños | 36.1% | 15.41 |
Inserción masiva en colecciones con documentos pequeños | 39.3% | 37.38 |
Inserción masiva con documentos pequeños | 35.1% | 41.51 |
Tip
Para obtener más información sobre cómo realizamos pruebas de referencia del desempeño de los conductores, consulte la Evaluación comparativa del desempeño especificación.
Novedades en 5.4
La versión del controlador 5.4 incluye los siguientes cambios, correcciones y funcionalidades:
Admite operaciones
$lookuppara CSFLE y QE. Para aprender más, consulte las siguientes referencias en el manual del servidor:Comportamiento de $lookup y $graphLookup para CSFLE
Introduce un Bill of Materials (BOM) para gestionar las versiones de los artefactos JVM de MongoDB que podrías utilizar en tu aplicación. Para ver las instrucciones sobre cómo añadir el BOM a tu aplicación, consulta el paso Añadir la lista de materiales del controlador del tutorial de descarga e instalación.
Actualiza las dependencias del SDK de AWS a 2.30.31 y 1.12.782 para probar el mecanismo de autenticación
MONGODB-AWS.Agrega una opción de ordenación a las
ClientUpdateOneOptionsClientReplaceOneOptionsclases y. Este cambio permite establecer un orden de clasificación para las operaciones de actualización y reemplazo en las escrituras masivas del cliente. Para obtener más información, consulte las secciones «Operaciones de actualización» y «Operaciones de reemplazo» de la guía de operaciones de escritura masiva.Agrega soporte para Kubernetes en la autenticación OIDC. Para obtener más información, consulta la sección MONGODB-OIDC: Kubernetes de la guía de Mecanismos de autenticación de empresa.
Agrega soporte de primera clase para los siguientes operadores del query de MongoDB Search:
phraseregexqueryStringequalsmoreLikeThisinwildcard
Para obtener más información, consulte la sección MongoDB Search de la guía de agregación.
Actualiza los cursores para refrescar la configuración
timeoutMScuando llamas aclose()sin afectar el tiempo de espera de la operación.Le permite utilizar un índice al llamar al método
distinct()especificando una opciónhint.
Para ver una lista completa de los cambios de esta versión, consulta las notas de versión v5.4 en GitHub.
Novedades en la versión 5.3
La versión del controlador 5.3 incluye los siguientes cambios, correcciones y funcionalidades:
Importante: La próxima versión menor dejará de ser compatible con la versión del servidor MongoDB 4.0 y aumentará la versión mínima compatible a la 4.2. Recomendamos realizar cambios en tu aplicación para adaptarla a los cambios disruptivos. Consulta la sección Notas de la versión en el manual del servidor para obtener más información sobre la actualización.
Agrega la clase
BinaryVectorpara implementar el Subtipo Binario BSON 9 para el almacenamiento y recuperación de vectores. Esta clase proporciona un almacenamiento más eficaz de los valores en comparación con una lista de instancias deDouble. Puedes crear los siguientes tipos de vectores en función del tipo de elementos que contiene tu vector:Int8BinaryVectorVectores de números enteros con signo de 8bitsFloat32BinaryVector: Vector de n\u00fameros 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. BinaryVector
Elimina la equidad explícita de la implementación del pool de conexiones. Este cambio podría contribuir a un mejor rendimiento cuando utilices una instancia
MongoClienten muchos hilos de aplicación. Sin embargo, este cambio podría causar un aumento de la latencia de cola.Agrega una opción de ordenación a los
updateOne()replaceOne()métodos y. Este cambio también permite establecer una opción de ordenación al crearReplaceOneModelUpdateOneModelinstancias y. Para obtener más información,consulte las guías deActualizar documentos, Reemplazar documentos y Operaciones de escritura masiva.
- Implementa una API de escritura masiva cliente que permite realizar operaciones de escritura en varias bases de datos y colecciones en la misma llamada. Para obtener más información sobre esta funcionalidad, consulta la sección Escritura masiva del Cliente de la guía Operaciones masivas.
Novedades en 5.2
Importante
Eliminación del soporte para MongoDB Server 3.6
Java Reactive Streams driver v5.2 elimina el soporte para MongoDB Server 3.6. Para aprender más sobre las versiones compatibles del servidor, consulte Compatibilidad.
La versión del controlador 5.2 incluye los siguientes cambios, correcciones y funcionalidades:
Permite configurar un tiempo de espera para operaciones del lado del cliente (CSOT). Esta funcionalidad permite establecer un solo tiempo de espera en tu instancia de
MongoClientque se aplica a todas las operaciones realizadas con ese cliente. Para obtener más información, consulta la guía Limitar el tiempo de ejecución del servidor.Si, y sólo si, la funcionalidad CSOT está habilitada, las siguientes opciones de tiempo de espera serán ignoradas por el driver:
waitQueueTimeoutMSsocketTimeoutMSwTimeoutMSmaxTimeMSmaxCommitTimeMS
Importante
Funcionalidad Experimental
CSOT es una funcionalidad experimental y aún no está lista para producción. Esta funcionalidad es opcional en la versión actual y las opciones de tiempo de espera existentes siguen siendo funcionales.
Agrega la
SearchIndexTypeclase, que puede pasarse al crear unaSearchIndexModelinstancia. Este cambio permite especificar el tipo de índice al crear un índice de Atlas Search o Vector Search. Para obtener más información, consulte SearchIndexModel.Delegar la implementación de los algoritmos que implementan los mecanismos de autenticación
SCRAM-SHA-1ySCRAM-SHA-256en el proveedor JCA configurado. Este cambio significa que tu aplicación puede usar un proveedor JCA configurado conforme a FIPS para ofrecer un mayor nivel de seguridad.Revisa la versionado de la dependencia mongodb-crypt para que coincida con el versionado de los drivers JVM. Las futuras versiones de
mongodb-cryptse publicarán junto con el controlador y compartirán el mismo número de versión. Debes actualizar tu dependenciamongodb-crypta la versión v5.2.0 cuando actualices tu Driver para esta versión. Para saber más, puedes consultar la Guía de cifrado en uso.Mejoras de rendimiento debido 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 tu sistema operativo:
Windows: actualiza tu versión de
mongodb-crypta la v5.2.0.Mac: actualice su versión de
mongodb-crypta v5.2.0.Linux: Instala
libmongocrypt.sodirectamente en el sistema de archivos, en vez de usar el archivo que está incluido dentro del archivo JARmongodb-crypt. Puedes encontrar instrucciones de Linux para instalarlibmongocrypten el manual del servidor. Si utilizas un gestor de paquetes para instalarlibmongocrypt, Java Native Access (JNA) lo encontrará ahí sin necesidad de más configuración. Como alternativa, puedes especificar la ruta de búsqueda configurando la variable de entornoLD_LIBRARY_PATHa la ruta de archivo del paquetelibmongocrypt.Recomendamos la instalación directa porque la librería compartida incluida no se enlaza con OpenSSL debido al potencial de incompatibilidades binarias con OpenSSL.
La carga de la librería compartida es manejada por JNA. Se puede consultar las reglas para el orden de búsqueda de carga de librerías en la documentación de la clase NativeLibrary.
Corrige un problema que provocaba que los métodos
InsertOneResult.getInsertedId()yInsertManyResult.getInsertedIds()devolvieran ID de documentos incorrectos en algunas situaciones. Este cambio se ha aplicado retroactivamente al controlador de flujos reactivos de Java v5.1.4 y v4.11.4.Cuando una operación de clúster segmentado no tiene éxito, el driver evita seleccionar el mismo servidor
mongospara reintentar la operación si hay otros servidoresmongosdisponibles.Agrega los metadatos de alcanzabilidad necesarios cuando tu aplicación utiliza GraalVM Native Image. Estos metadatos sustituyen la necesidad de recopilar metadatos de alcance cuando se utilizan las librerías del driver. Para aprender más, consulte Metadatos de alcanzabilidad en la documentación de GraalVM.
Este cambio no agrega las entradas de recursos
libjnidispatchylibmongocrypt, porque agregar entradas para todas las plataformas soportadas (destinos) afecta significativamente el tamaño de los ejecutables nativos construidos usando GraalVM Native Image. Consulta este archivo de muestra resource-config.json en el repositorio de GitHub del controlador para ver cómo especificar estas entradas explícitamente si tu aplicación depende de la libreríaorg.mongodb:mongodb-crypt.Permite una búsqueda vectorial precisa al extender la API de
VectorSearchOptionspara introducir los siguientes subtipos de opciones específicos:ExactVectorSearchOptions: Utiliza este tipo de opciones para habilitar la coincidencia precisa, asegurando que los resultados sean los vectores más cercanos a un vector de query 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 cómo usar la función de búsqueda vectorial de MongoDB, consulte la Guía de inicio rápido de la búsqueda vectorial de MongoDB.
Novedades en 5.1.3
El 5.1.3 La versión de parchado del driver incluye los siguientes cambios:
- Corrige un problema que podía causar errores de aserción al usar tipos de
Cursor.
Novedades en 5.1.2
El 5.1.2 La versión de parchado del driver incluye los siguientes cambios:
- Corrige un problema que impide que el driver codifique y decodifique clases concretas que extienden clases base genéricas, en casos en los que se especifica la clase base como el tipo genérico de la instancia
MongoCollection.
Novedades en 5.1.1
El 5.1.1 La versión de parchado del driver incluye los siguientes cambios:
- Al utilizar el mecanismo de autenticación
MONGODB-OIDC, no se deben incluir caracteres de coma en el valor de cadena de conexiónauthMechanismProperties.
Novedades en 5.1
Importante
MongoDB Server v3.6 Fin de vida
El soporte para MongoDB Server v3.6 está obsoleto en esta versión y se eliminará en la versión v5.2 del controlador.
Para aprender sobre otros cambios introducidos en v5.1, consulte la guía Qué hay de nuevo en la documentación del Java Sync Driver.