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
/ /

Actualizar versiones de los controladores

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, realiza 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ágina de Compatibilidad.

  • Aborde cualquier cambio disruptivo entre la versión actual del controlador que utiliza su aplicación y su versión de actualización planificada en la sección Cambios disruptivos. Para obtener más información sobre los cambios de compatibilidad en las versiones del servidor de MongoDB, consulta la sección Cambios de compatibilidad en las 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 Stable API.

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 disruptivos en esta sección se categorizan según la versión del driver que los ha introducido. Al actualizar versiones de drivers, soluciona todos los cambios disruptivos entre la versión actual y la versión de actualización. Por ejemplo, si se está actualizando el driver de la versión5.0 a la versión5.5, se deben abordar todos los cambios disruptivos de las versiones posteriores a la v5.0, incluyendo cualquiera listado para la v5.5.

Esta versión del driver introduce los siguientes cambios disruptivos:

  • Se descarta la compatibilidad con el servidor MongoDB v3.6. Para obtener más información sobre este cambio, consulta la sección Cambios en la compatibilidad con servidores de la versión del controlador 5.2 .

  • 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-crypt se publican junto con el controlador y comparten el mismo número de versión. Debe actualizar su dependencia de mongodb-crypt a v5.2.0 al actualizar su controlador para esta versión.

Esta versión del driver introduce los siguientes cambios disruptivos:

  • Al usar el mecanismo de autenticación MONGODB-OIDC, no se pueden incluir comas en el valor de la cadena de conexión authMechanismProperties. Si el valor authMechanismProperties incluye una coma, páselo como opción de conexión en una instancia MongoClientSettings.

Esta versión del driver introduce los siguientes cambios disruptivos:

  • Se introducen los siguientes cambios en la clase ConnectionId:

    • El constructor ConnectionId ahora acepta un valor de tipo long como segundo parámetro en lugar de int. De igual forma, ahora acepta un valor de tipo Long como tercer parámetro en lugar de Integer. Dado que este cambio rompe la compatibilidad binaria, recompile cualquier código existente que llame al constructor ConnectionId.

    • El método withServerValue() ahora acepta un parámetro de tipo long en lugar del tipo int. Debido a que este cambio rompe la compatibilidad binaria, debes recompilar cualquier código que llame al método withServerValue().

    • El método getServerValue() ahora regresa un valor de tipo Long en vez de tipo Integer. De manera similar, el método getLocalValue() devuelve un valor de tipo long en lugar de tipo int. Dado que este cambio rompe tanto la compatibilidad binaria como la de origen, actualice cualquier código fuente que utilice estos métodos y vuelva a compilar su binario.

  • Reemplaza las siguientes anotaciones de registros del paquete org.bson.codecs.record.annotations con anotaciones del mismo nombre del paquete org.bson.codecs.pojo.annotations:

    • BsonId

    • BsonProperty

    • BsonRepresentation

  • Se cambia el tipo de dato del parámetro de duración del tiempo de espera connectTimeout para los métodos SocketSettings.Builder.connectTimeout() y SocketSettings.Builder.readTimeout(). El tipo de dato de este parámetro ahora es long en lugar de int.

    En versiones anteriores, este parámetro es de tipo int para ambos métodos. Este cambio afecta la compatibilidad binaria y requiere recompilación, pero no requiere cambios en el código.

  • Se elimina el método Filters.eqFull(), disponible exclusivamente en Beta, que permitía construir un filtro de igualdad al realizar una búsqueda vectorial. En su lugar, se puede usar el método Filters.eq() al instanciar un tipo VectorSearchOptions, como se muestra en el siguiente código:

    val opts = vectorSearchOptions().filter(eq("x", 8))
  • Cambia la forma en que ClusterSettings calcula la configuración ClusterConnectionMode, 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ía ClusterConnectionMode.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
  • BsonDecimal128 los valores responden a las llamadas de métodos de la misma manera que los valores Decimal128. BsonDecimal128.isNumber() ahora devuelve true y BsonDecimal128.asNumber() devuelve el BsonNumber equivalente.

  • Remueve los métodos ServerAddress getSocketAddress() y getSocketAddresses().

    En lugar de getSocketAddress(), utilice el método de instancia getByName() de java.net.InetAddress.

    En lugar de getSocketAddresses(), utilice el método de instancia getAllByName() de java.net.InetAddress.

  • Remueve los métodos UnixServerAddress getSocketAddress() y getUnixSocketAddress().

    En lugar de getSocketAddress(), utilice el método de instancia getByName() de java.net.InetAddress.

    En lugar de getUnixSocketAddress(), construya una instancia de jnr.unixsocket.UnixSocketAddress. Pasar la ruta completa del archivo del socket UNIX al constructor. Por defecto, MongoDB crea un archivo de socket UNIX situado en "/tmp/mongodb-27017.sock". Para obtener más información sobre la clase UnixSocketAddress, consulta la documentación de la API UnixSocketAddress.

  • Elimina la interfaz Parameterizable. En lugar de implementar esta interfaz en un tipo Codec personalizado, anule el método CodecProvider.get() en el CodecProvider del códec si este está diseñado para un tipo parametrizado.

  • Remueve el método isSlaveOk() de las clases ReadPreference y TaggableReadPreference. Para comprobar si una preferencia de lectura permite leer de un miembro secundario de un set de réplicas, use los isSecondaryOk() métodos de estas clases en su lugar.

  • Elimina los métodos auxiliares DBCollection.getStats() y DBCollection.isCapped() para el comando collStats. En lugar de estos métodos, puedes usar la etapa del pipeline de agregación $collStats.

  • Elimina las clases MapCodec y IterableCodec. En lugar de MapCodec, se debe usar MapCodecProvider. En lugar de IterableCodec, usar CollectionCodecProvider, o IterableCodecProvider para los tipos Iterable que no sean tipos Collection.

  • Remueve los métodos sharded() y nonAtomic() de las clases MapReducePublisher y MapReduceIterable.

  • Elimina los siguientes métodos para su uso con índices geoHaystack:

    • Indexes.geoHaystack()

    • IndexOptions.getBucketSize()

    • IndexOptions.bucketSize()

    En su lugar, puedes usar la etapa del pipeline de agregación $geoNear o un operador del query geoespacial en un índice 2d. Para obtener más información, consulte la página Consultas geoespaciales en el manual del servidor de MongoDB.

  • Elimina la opción oplogReplay de las operaciones de búsqueda. Los siguientes métodos oplogReplay ya 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)

  • Remueve la opción errorLabels de la clase WriteConcernError. Esto incluye los métodos addLabel() y getErrorLabels() y el constructor que incluye un parámetro errorLabels. En su lugar, puedes utilizar las etiquetas de error incluidas en el objeto MongoException que contiene el WriteConcernError.

  • Elimina las siguientes clases del paquete com.mongodb.event:

    • ConnectionAddedEvent

    • ConnectionPoolOpenedEvent

    • ConnectionRemovedEvent

    • ClusterListenerAdapter

    • ConnectionPoolListenerAdapter

    • ServerListenerAdapter

    • ServerMonitorListenerAdapter

    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 authorizedCollection al comando listCollections. Esto introduce un cambio binario importante en el método MongoDatabase.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étodo MongoClientSettings.Builder.transportSettings() en su lugar.

    • MongoClientSettings.getStreamFactoryFactory() método. Utilice el método MongoClientSettings.getTransportSettings() en su lugar.

    • NettyStreamFactoryFactory clase. En su lugar, llame al método TransportSettings.nettyBuilder() para crear un objeto NettyTransportSettings. Luego, llama al método MongoClientSettings.Builder.transportSettings() para aplicar la configuración.

    • NettyStreamFactory clase.

    • AsynchronousSocketChannelStreamFactory clase.

    • AsynchronousSocketChannelStreamFactoryFactory clase.

    • BufferProvider interfaz.

    • SocketStreamFactory clase.

    • Stream interfaz.

    • StreamFactory interfaz.

    • StreamFactoryFactory interfaz.

    • TlsChannelStreamFactoryFactory clase.

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.

Un cambio de compatibilidad con una versión de servidor es una modificación del controlador Kotlin que descontinúa el soporte para un conjunto de versiones de servidores 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.

No puedes utilizar una versión 3.x del controlador de Kotlin para conectarte a una implementación de MongoDB que ejecute el servidor de MongoDB a partir de la versión v8.1 o posterior. A partir de la versión v8.1 del servidor de MongoDB, el comando buildinfo requiere autenticación, lo que genera una incompatibilidad con la versión v3.x driver.

El controlador v5.5 deja de admitir el servidor MongoDB 4.0. Para usar la v5.5 driver, debe conectarse al servidor MongoDB 4.2 o posterior. Para aprender a cómo actualizar tu implementación de servidor MongoDB, consulta las notas de versión en el manual del servidor MongoDB.

El controlador v5.2 deja de admitir el servidor MongoDB 3.6. Para usar la v5.2 driver, debe conectarse al servidor MongoDB 4.0 o posterior. Para aprender a cómo actualizar tu implementación de servidor MongoDB, consulta las notas de versión en el manual del servidor MongoDB.

El controlador v4.8 deja de admitir el servidor MongoDB 3.4 y anteriores. Para usar la v4.8 driver, debe conectarse al servidor MongoDB 3.6 o posterior. Para aprender a cómo actualizar tu implementación de servidor MongoDB, consulta las notas de versión en el manual del servidor MongoDB.

Volver

Migrar desde KMongo