Overview
En esta sección, puede identificar los cambios que debe realizar en su aplicación para actualizar su controlador a una nueva versión.
Antes de actualizar, realice las siguientes acciones:
Asegúrese de que la nueva versión del controlador sea compatible con las versiones del servidor MongoDB a las que se conecta su aplicación y con el entorno de ejecución de Java (JRE) en el que se ejecuta. Para ver información sobre compatibilidad, consulte Páginade compatibilidad.
Aborde cualquier cambio importante entre la versión actual del controlador que utiliza su aplicación y la versión de actualización planificada en la sección Cambios importantes. Para obtener más información sobre los cambios de compatibilidad de versiones del servidor de MongoDB, consulte la sección Cambios de compatibilidad de versiones del servidor.
Tip
Para minimizar la cantidad de cambios que su aplicación podría requerir cuando actualice las versiones del controlador en el futuro, utilice el API estable.
Cambios radicales
Un cambio importante es una modificación en una convención o comportamiento de una versión específica del controlador que podría impedir que su aplicación funcione correctamente si no se soluciona antes de la actualización.
Los cambios importantes de esta sección se clasifican según la versión del controlador que los introdujo. Al actualizar las versiones del controlador, aborde todos los cambios importantes entre la versión actual y la versión de actualización. Por ejemplo, si actualiza el controlador5.0 de5.5 la versión 7600 a la 7800, aborde todos los cambios importantes de las versiones posteriores a la5.0 8000, incluidos los de la5.5 8200.
Cambios importantes en la versión 5.5
El controlador ya no es compatible con la versión del servidor MongoDB.4.0 Para obtener más información sobre este cambio, consulte la sección "Cambios en la compatibilidad del servidor con la versión 5.5 del controlador".
Cambios importantes en la versión 5.2
Esta versión del controlador introduce los siguientes cambios importantes:
Se elimina la compatibilidad con el servidor MongoDB3.6 v. Para obtener más información sobre este cambio, consulte la sección "Cambios en la compatibilidad del servidor con la versión del 5.2 controlador ".
Se revisa el control de versiones de las dependencias de mongodb-crypt para que coincida con el control de versiones de los controladores de JVM. Futuras versiones de
mongodb-cryptSe lanzan junto con el controlador y comparten el mismo número de versión. Debe actualizar su dependenciamongodb-crypta v5.2.0 al actualizar el controlador para esta versión.
Cambios importantes en la versión 5.1
Esta versión del controlador introduce los siguientes cambios importantes:
Al usar el mecanismo de autenticación
MONGODB-OIDC, no se pueden incluir comas en el valor de la cadena de conexiónauthMechanismProperties. Si el valorauthMechanismPropertiesincluye una coma, páselo como opción de conexión en una instanciaMongoClientSettings.
Cambios importantes en la versión 5.0
Esta versión del controlador introduce los siguientes cambios importantes:
Introduce los siguientes cambios en la clase
ConnectionId:El constructor
ConnectionIdahora acepta un valor de tipolongcomo segundo parámetro en lugar deint. De igual forma, ahora acepta un valor de tipoLongcomo tercer parámetro en lugar deInteger. Dado que este cambio rompe la compatibilidad binaria, recompile cualquier código existente que llame al constructorConnectionId.El método
withServerValue()ahora acepta un parámetro de tipolongen lugar deint. Dado que este cambio rompe la compatibilidad binaria, debe recompilar cualquier código que llame al métodowithServerValue().El método
getServerValue()ahora devuelve un valor de tipoLongen lugar deInteger. De forma similar, el métodogetLocalValue()devuelve un valor de tipolongen lugar deint. Dado que este cambio rompe la compatibilidad entre el binario y el código fuente, actualice cualquier código fuente que utilice estos métodos y reconstruya su binario.
Reemplaza las siguientes anotaciones de registros del paquete
org.bson.codecs.record.annotationscon anotaciones del mismo nombre del paqueteorg.bson.codecs.pojo.annotations:BsonIdBsonPropertyBsonRepresentation
Se cambia el tipo de dato del parámetro de duración del tiempo de espera
connectTimeoutpara los métodosSocketSettings.Builder.connectTimeout()ySocketSettings.Builder.readTimeout(). El tipo de dato de este parámetro ahora eslongen lugar deint.En versiones anteriores, este parámetro era de tipo
intpara ambos métodos. Este cambio rompe la compatibilidad binaria y requiere una recompilación, pero no requiere cambios en el código.Se elimina el método
Filters.eqFull(), disponible exclusivamente enBeta, que permitía construir un filtro de igualdad al realizar una búsqueda vectorial. En su lugar, se puede usar el métodoFilters.eq()al instanciar un tipoVectorSearchOptions, como se muestra en el siguiente código:val opts = vectorSearchOptions().filter(eq("x", 8)) Cambia la forma en que
ClusterSettingscalcula la configuraciónClusterConnectionMode, haciéndolo más consistente al usar el nombre del conjunto de réplicas especificado, independientemente de su configuración. Anteriormente, el controlador solo consideraba el nombre del conjunto de réplicas si estaba definido en la cadena de conexión.Por ejemplo, los dos ejemplos de código siguientes devuelven el valor
ClusterConnectionMode.MULTIPLE. Anteriormente, el segundo ejemplo devolvíaClusterConnectionMode.SINGLE.ClusterSettings.builder() .applyConnectionString(ConnectionString("mongodb://127.0.0.1:27017/?replicaSet=replset")) .build() .mode ClusterSettings.builder() .hosts(listOf(ServerAddress("127.0.0.1", 27017))) .requiredReplicaSetName("replset") .build() .mode BsonDecimal128Los valores responden a las llamadas de método de la misma manera que los valoresDecimal128.BsonDecimal128.isNumber()ahora devuelvetrueyBsonDecimal128.asNumber()devuelve el equivalenteBsonNumber.Elimina 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.Elimina los métodos UnixServerAddress
getSocketAddress()getUnixSocketAddress()y.En lugar de
getSocketAddress(), utilice el método de instanciagetByName()dejava.net.InetAddress.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ón sobre laUnixSocketAddressclase, consulte la documentación de la API UnixSocketAddress.Elimina la interfaz
Parameterizable. En lugar de implementar esta interfaz en un tipoCodecpersonalizado, anule el métodoCodecProvider.get()en elCodecProviderdel códec si este está diseñado para un tipo parametrizado.Elimina el método
isSlaveOk()de las clasesReadPreferenceyTaggableReadPreference. Para comprobar si una preferencia de lectura permite leer desde un miembro secundario de un conjunto de réplicas, utilice los métodosisSecondaryOk()de estas clases.Elimina los métodos auxiliares
DBCollection.getStats()yDBCollection.isCapped()del comandocollStats. En lugar de estos métodos, puede usar la etapa de canalización de agregación$collStats.Elimina las clases
MapCodecyIterableCodec. En lugar deMapCodec, useMapCodecProvider. En lugar deIterableCodec, useCollectionCodecProvideroIterableCodecProviderpara los tiposIterableque no sean tiposCollection.Elimina los métodos
sharded()ynonAtomic()de las clasesMapReducePublisheryMapReduceIterable.Elimina los siguientes métodos para su uso con índices
geoHaystack:Indexes.geoHaystack()IndexOptions.getBucketSize()IndexOptions.bucketSize()
En su lugar, puede usar la
$geoNearetapa de canalización de agregación o un operador de consulta geoespacial en un 2índice d. Para obtener más información, consulte la página Consultas geoespaciales en el manual del servidor MongoDB.Elimina la opción
oplogReplayde las operaciones de búsqueda. Los siguientes métodosoplogReplayya no están disponibles:DBCursor.oplogReplay()DBCollectionFindOptions.isOplogReplay()DBCollectionFindOptions.oplogReplay()FindPublisher.oplogReplay()FindIterable.oplogReplay()
Elimina los siguientes constructores
Exception:MongoBulkWriteException(BulkWriteResult, List<BulkWriteError>, WriteConcernError, ServerAddress)MongoCursorNotFoundException(long, ServerAddress)MongoQueryException(ServerAddress, int, String)MongoQueryException(ServerAddress, int, String, String)MongoQueryException(MongoCommandException)
Elimina las siguientes sobrecargas para el método
BulkWriteResult.acknowledged():acknowledged(Type, int, List<BulkWriteUpsert>)acknowledged(Type, int, Integer, List<BulkWriteUpsert>)acknowledged(int, int, int, Integer, List<BulkWriteUpsert>)
Elimina los siguientes constructores
ChangeStreamDocument:ChangeStreamDocument(String, BsonDocument, BsonDocument, BsonDocument, TDocument, TDocument, BsonDocument, ...)ChangeStreamDocument(String, BsonDocument, BsonDocument, BsonDocument, TDocument, BsonDocument, BsonTimestamp, ...)ChangeStreamDocument(OperationType, BsonDocument, BsonDocument, BsonDocument, TDocument, BsonDocument, BsonTimestamp, ...)
Elimina los siguientes constructores para eventos:
CommandEvent(RequestContext, int, ConnectionDescription, String)CommandEvent(int, ConnectionDescription, String)CommandEvent(RequestContext, long, int, ConnectionDescription, String)CommandFailedEvent(RequestContext, int, ConnectionDescription, String, long, Throwable)CommandFailedEvent(int, ConnectionDescription, String, long, Throwable)CommandStartedEvent(RequestContext, int, ConnectionDescription, String, String, BsonDocument)CommandStartedEvent(int, ConnectionDescription, String, String, BsonDocument)CommandSucceededEvent(RequestContext, int, ConnectionDescription, String, BsonDocument, long)CommandSucceededEvent(int, ConnectionDescription, String, BsonDocument, long)ConnectionCheckedInEvent(ConnectionId)ConnectionCheckedOutEvent(ConnectionId, long)ConnectionCheckedOutEvent(ConnectionId)ConnectionCheckOutFailedEvent(ServerId, long, Reason)ConnectionCheckOutFailedEvent(ServerId, Reason)ConnectionCheckOutStartedEvent(ServerId)ConnectionReadyEvent(ConnectionId)ServerHeartbeatFailedEvent(ConnectionId, long, Throwable)ServerHeartbeatSucceededEvent(ConnectionId, BsonDocument, long)
Elimina la opción
errorLabelsde la claseWriteConcernError. Esto incluye los métodosaddLabel()ygetErrorLabels(), así como el constructor que incluye un parámetroerrorLabels. En su lugar, puede usar las etiquetas de error incluidas en el objetoMongoExceptionque contiene elWriteConcernError.Elimina las siguientes clases del paquete
com.mongodb.event:ConnectionAddedEventConnectionPoolOpenedEventConnectionRemovedEventClusterListenerAdapterConnectionPoolListenerAdapterServerListenerAdapterServerMonitorListenerAdapter
El controlador también elimina los siguientes métodos relacionados de la interfaz
ConnectionPoolListener:connectionAdded()connectionPoolOpened()connectionRemoved()
Para obtener más información sobre el paquete
com.mongodb.event, consulte la documentación de la API.
Añade la opción
authorizedCollectional comandolistCollections. Esto introduce un cambio binario importante en el métodoMongoDatabase.listCollectionNames(). Este cambio no requiere modificaciones en el código fuente, pero es necesario recompilar cualquier código que utilice este método.Elimina los siguientes métodos y tipos relacionados con la interfaz Stream:
MongoClientSettings.Builder.streamFactoryFactory()método. Utilice el métodoMongoClientSettings.Builder.transportSettings()en su lugar.MongoClientSettings.getStreamFactoryFactory()método. Utilice el métodoMongoClientSettings.getTransportSettings()en su lugar.NettyStreamFactoryFactoryClase. En su lugar, llame al métodoTransportSettings.nettyBuilder()para crear un objetoNettyTransportSettings. Luego, llame al métodoMongoClientSettings.Builder.transportSettings()para aplicar la configuración.NettyStreamFactoryclase.AsynchronousSocketChannelStreamFactoryclase.AsynchronousSocketChannelStreamFactoryFactoryclase.BufferProviderinterfaz.SocketStreamFactoryclase.Streaminterfaz.StreamFactoryinterfaz.StreamFactoryFactoryinterfaz.TlsChannelStreamFactoryFactoryclase.
Tip
Para ver los cambios más importantes de las versiones anteriores del controlador, consulte las Notas de la versión en el mongo-java-driver repositorio de GitHub.
Cambios de compatibilidad de versiones del servidor
Un cambio de compatibilidad de versión de servidor es una modificación al controlador Kotlin que interrumpe el soporte para un conjunto de versiones de servidor MongoDB.
El controlador deja de brindar soporte para una versión del servidor MongoDB una vez que alcanza el final de su vida útil (EOL).
Para obtener más información sobre el soporte de MongoDB para productos EOL, consulte la Política de soporte heredado.
Versión del servidor 8.1 Cambios de soporte
No se puede usar una versión 3.x del controlador Kotlin para conectarse a una implementación de MongoDB con el servidor MongoDB v8.1 o posterior. A partir del servidor MongoDB v8.1, el comando buildinfo requiere autenticación, lo que provoca una incompatibilidad con el controlador v3.x.
Cambios en la compatibilidad del servidor con la versión del controlador 5.5
El5.5 controlador v deja de ser compatible con el servidor MongoDB.4.0 Para usar el5.5 controlador v, debe conectarse al servidor MongoDB 4.2 o posterior. Para saber cómo actualizar su implementación del servidor MongoDB, consulte las Notas de la versión en el manual del servidor MongoDB.
Cambios en la compatibilidad del servidor con la versión del controlador 5.2
El5.2 controlador v deja de ser compatible con el servidor MongoDB.3.6 Para usar el5.2 controlador v, debe conectarse al servidor MongoDB 4.0 o posterior. Para saber cómo actualizar su implementación del servidor MongoDB, consulte las Notas de la versión en el manual del servidor MongoDB.
Cambios en la compatibilidad del servidor con la versión del controlador 4.8
El4.8 controlador v deja de ser compatible con el servidor MongoDB 3.4 y versiones anteriores. Para usar el4.8 controlador v, debe conectarse al servidor MongoDB 3.6 o posterior. Para saber cómo actualizar su implementación del servidor MongoDB, consulte las Notas de la versión en el manual del servidor MongoDB.