Visão geral
Nesta seção, você pode identificar as alterações que deve fazer no seu aplicação para atualizar seu driver para uma nova versão.
Antes de atualizar, execute as seguintes ações:
Certifique-se de que a nova versão do driver seja compatível com as versões do MongoDB Server às quais seu aplicação se conecta e com o Java Runtime Environment (JRE) em que seu aplicação é executado. Para visualizar informações de compatibilidade, consulte a páginade compatibilidade do.
Resolva quaisquer alterações significativas entre a versão atual do driver que seu aplicação está usando e a versão de atualização planejada na seçãoAlterações significativas. Para saber mais sobre as alterações de compatibilidade da versão do MongoDB Server , consulte a seção Alterações de compatibilidade da versão do servidor.
Dica
Para minimizar o número de alterações que seu aplicação pode exigir quando você atualizar as versões do driver no futuro, use a API estável.
Mudanças de última hora
Uma alteração interruptiva é uma modificação em uma convenção ou comportamento em uma versão específica do driver que pode impedir que sua aplicação funcione corretamente se não for resolvida antes da atualização.
As mudanças significativas nesta seção são categorizadas pela versão do driver que as introduziram. Ao atualizar as versões do driver, resolva todas as alterações significativas entre a versão atual e a atualizada. Por exemplo, se você estiver atualizando o driver da v5.0 para a v5.5, resolva todas as alterações significativas das versões posteriores à v5.0 incluindo qualquer um listado para v5.5.
Versão 5.5 Alterações interruptivas
O driver não é mais compatível com o MongoDB Server versão 4.0. Para saber mais sobre essa alteração, consulte a seção Alterações de suporte do servidor da versão do driver 5.5 .
Versão 5.2 Alterações interruptivas
Esta versão do driver apresenta a seguinte alteração interruptiva:
Elimina o suporte para o MongoDB Server v3.6. Para saber mais sobre essa alteração, consulte a seção Alterações de suporte do servidor da versão do 5.2 driver.
Revisa a versão de dependência mongodb-crypt para corresponder à versão dos drivers da JVM . Versões futuras do
mongodb-crypt
são lançadas junto com o driver e compartilham o mesmo número da versão. Você deve atualizar sua dependênciamongodb-crypt
para v5.2.0 ao atualizar seu driver para esta versão.
Versão 5.1 Alterações interruptivas
Esta versão do driver apresenta a seguinte alteração interruptiva:
Ao usar o mecanismo de autenticação
MONGODB-OIDC
, você não pode incluir vírgulas no valor da string de conexãoauthMechanismProperties
. Se o seu valorauthMechanismProperties
incluir uma vírgula, passe o valor como uma opção de conexão em uma instânciaMongoClientSettings
.
alteração interruptiva na versão 5.0
Esta versão do driver apresenta a seguinte alteração interruptiva:
Introduza as seguintes alterações na classe
ConnectionId
:O construtor
ConnectionId
agora aceita um valor do tipolong
como seu segundo parâmetro em vez do tipoint
. Da mesma forma, o construtor agora aceita um valor do tipoLong
como seu terceiro parâmetro em vez do tipoInteger
. Como essa alteração quebra a compatibilidade binária, recrie qualquer código existente que chame o construtorConnectionId
.O método
withServerValue()
agora aceita um parâmetro do tipolong
em vez do tipoint
. Como essa alteração quebra a compatibilidade binária, você deve recompilar qualquer código que chame o métodowithServerValue()
.O método
getServerValue()
agora retorna um valor do tipoLong
em vez do tipoInteger
. Da mesma forma, o métodogetLocalValue()
retorna um valor do tipolong
em vez do tipoint
. Como essa alteração quebra a compatibilidade binária e de origem, atualize qualquer código-fonte que use esses métodos e reconstrua seu binário.
Substitui as seguintes anotações de registro do pacote
org.bson.codecs.record.annotations
por anotações do mesmo nome do pacoteorg.bson.codecs.pojo.annotations
:BsonId
BsonProperty
BsonRepresentation
Altera o tipo de dados do parâmetro de duração do tempo limite
connectTimeout
para os métodosSocketSettings.Builder.connectTimeout()
eSocketSettings.Builder.readTimeout()
. O tipo de dados deste parâmetro é agoralong
em vez deint
.Nas versões anteriores, esse parâmetro é do tipo
int
para ambos os métodos. Essa alteração quebra a compatibilidade binária e requer recompilação, mas não requer alterações de código.Remove o método
Filters.eqFull()
, lançado exclusivamente emBeta
, que permitia construir um filtro de igualdade ao executar uma pesquisa vetorial. Em vez disso, você pode usar o métodoFilters.eq()
ao instanciar um tipoVectorSearchOptions
, conforme mostrado no código a seguir:val opts = vectorSearchOptions().filter(eq("x", 8)) Altera como
ClusterSettings
calcula a configuraçãoClusterConnectionMode
, tornando-a mais consistente usando o nome do conjunto de réplicas especificado, independentemente de como ela é configurada. Anteriormente, o driver tratava o nome do conjunto de réplicas somente se ele fosse definido na string de conexão.Por exemplo, as duas amostras de código a seguir retornam o valor
ClusterConnectionMode.MULTIPLE
. Anteriormente, o segundo exemplo retornavaClusterConnectionMode.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
os valores respondem às chamadas de método da mesma forma que os valoresDecimal128
.BsonDecimal128.isNumber()
agora retornatrue
eBsonDecimal128.asNumber()
retorna o equivalenteBsonNumber
.Remove os métodos ServerAddress
getSocketAddress()
egetSocketAddresses()
.Em vez de
getSocketAddress()
, utilize o método de instânciagetByName()
dejava.net.InetAddress
.Em vez de
getSocketAddresses()
, utilize o método de instânciagetAllByName()
dejava.net.InetAddress
.Remove os métodos UnixServerAddress
getSocketAddress()
egetUnixSocketAddress()
.Em vez de
getSocketAddress()
, utilize o método de instânciagetByName()
dejava.net.InetAddress
.Em vez de
getUnixSocketAddress()
, construa uma instância dejnr.unixsocket.UnixSocketAddress
. Passe o caminho completo do arquivo de soquete UNIX para o construtor. Por padrão, o MongoDB cria um arquivo de soquete UNIX localizado em"/tmp/mongodb-27017.sock"
. Para saber mais sobre aUnixSocketAddress
classe, consulte a documentação da API UnixSocketAddress.Remove a interface do
Parameterizable
. Em vez de implementar essa interface em um tipoCodec
personalizado, substitua o métodoCodecProvider.get()
noCodecProvider
do codec se o codec for destinado a um tipo parametrizado.Remove o método
isSlaveOk()
das classesReadPreference
eTaggableReadPreference
. Para verificar se uma preferência de leitura permite a leitura de um membro secundário de um conjunto de réplicas, use os métodosisSecondaryOk()
dessas classes.Remove os métodos auxiliares
DBCollection.getStats()
eDBCollection.isCapped()
do comandocollStats
. Em vez desses métodos, você pode utilizar o estágio de pipeline de agregação$collStats
.Remove as classes
MapCodec
eIterableCodec
. Em vez deMapCodec
, useMapCodecProvider
. Em vez deIterableCodec
, useCollectionCodecProvider
ouIterableCodecProvider
para tipos deIterable
que não são tiposCollection
.Remove os métodos
sharded()
enonAtomic()
das classesMapReducePublisher
eMapReduceIterable
.Remove os seguintes métodos para utilizar com índices
geoHaystack
:Indexes.geoHaystack()
IndexOptions.getBucketSize()
IndexOptions.bucketSize()
Em vez disso, você pode usar o estágio de pipeline de agregação
$geoNear
ou um operador de query geoespacial em um índice 2d. Para obter mais informações, consulte a página de queries geoespaciais no manual do MongoDB Server.Remove a opção
oplogReplay
das operações de localização. Os seguintes métodos dooplogReplay
não estão mais disponíveis:DBCursor.oplogReplay()
DBCollectionFindOptions.isOplogReplay()
DBCollectionFindOptions.oplogReplay()
FindPublisher.oplogReplay()
FindIterable.oplogReplay()
Remove os seguintes construtores
Exception
:MongoBulkWriteException(BulkWriteResult, List<BulkWriteError>, WriteConcernError, ServerAddress)
MongoCursorNotFoundException(long, ServerAddress)
MongoQueryException(ServerAddress, int, String)
MongoQueryException(ServerAddress, int, String, String)
MongoQueryException(MongoCommandException)
Remove as seguintes sobrecargas para o método
BulkWriteResult.acknowledged()
:acknowledged(Type, int, List<BulkWriteUpsert>)
acknowledged(Type, int, Integer, List<BulkWriteUpsert>)
acknowledged(int, int, int, Integer, List<BulkWriteUpsert>)
Remove os seguintes construtores
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, ...)
Remove os seguintes construtores 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)
Remove a opção
errorLabels
da classeWriteConcernError
. Isso inclui os métodosaddLabel()
egetErrorLabels()
e o construtor que inclui um parâmetroerrorLabels
. Em vez disso, você pode usar os rótulos de erro incluídos no objetoMongoException
que contém oWriteConcernError
.Remove as seguintes classes do pacote
com.mongodb.event
:ConnectionAddedEvent
ConnectionPoolOpenedEvent
ConnectionRemovedEvent
ClusterListenerAdapter
ConnectionPoolListenerAdapter
ServerListenerAdapter
ServerMonitorListenerAdapter
O driver também remove os seguintes métodos relacionados da interface
ConnectionPoolListener
:connectionAdded()
connectionPoolOpened()
connectionRemoved()
Para obter mais informações sobre o
com.mongodb.event
pacote, consulte a documentação da API.
Adiciona a opção
authorizedCollection
para o comandolistCollections
. Isso introduz uma alteração binária de quebra no métodoMongoDatabase.listCollectionNames()
. Essa alteração não requer nenhuma alteração no código-fonte, mas você deve recompilar qualquer código que use esse método.Remove os seguintes métodos e tipos relacionados à interface Stream:
MongoClientSettings.Builder.streamFactoryFactory()
método. Use o métodoMongoClientSettings.Builder.transportSettings()
.MongoClientSettings.getStreamFactoryFactory()
método. Use o métodoMongoClientSettings.getTransportSettings()
.NettyStreamFactoryFactory
classe. Em vez disso, chame o métodoTransportSettings.nettyBuilder()
para criar um objetoNettyTransportSettings
. Em seguida, chame o métodoMongoClientSettings.Builder.transportSettings()
para aplicar as configurações.NettyStreamFactory
classe.AsynchronousSocketChannelStreamFactory
classe.AsynchronousSocketChannelStreamFactoryFactory
classe.BufferProvider
interface.SocketStreamFactory
classe.Stream
interface.StreamFactory
interface.StreamFactoryFactory
interface.TlsChannelStreamFactoryFactory
classe.
Dica
Para visualizar as alterações significativas em versões anteriores do driver, consulte as Notas de versão no repositório mongo-java-driver
do Github.
Alterações na compatibilidade da versão do servidor
Uma alteração de compatibilidade de versão do servidor é uma modificação no driver do Kotlin Sync que descontinua o suporte para um conjunto de versões do MongoDB Server .
O driver interrompe o suporte para uma versão do Servidor MongoDB após atingir o fim da vida útil (EOL).
Para saber mais sobre o suporte MongoDB para produtos EOL, consulte a Política de Suporte Legado.
Versão do servidor 8.1 Mudanças no suporte
Você não pode usar uma versão 3.x do driver do Kotlin Sync para se conectar a uma implementação do MongoDB executando o MongoDB Server v8.1 ou posterior. Iniciando no MongoDB Server v8.1, o comando buildinfo
exige autenticação, causando uma incompatibilidade com o v3.x motorista.
Versão do driver 5.5 Alterações no suporte do servidor
O driver v5.5 elimina o suporte para o MongoDB Server 4.0. Para usar o v5.5 driver, você deve se conectar ao MongoDB Server 4.2 ou posterior. Para saber como atualizar seu sistema do MongoDB Server, consulte Notas de versão no manual do MongoDB Server.
Versão do driver 5.2 Alterações no suporte do servidor
O driver v5.2 elimina o suporte para o MongoDB Server 3.6. Para usar o v5.2 driver, você deve se conectar ao MongoDB Server 4.0 ou posterior. Para saber como atualizar seu sistema do MongoDB Server, consulte Notas de versão no manual do MongoDB Server.
Versão do driver 4.8 Alterações no suporte do servidor
O driver v4.8 elimina o suporte para o MongoDB Server 3.4 e versões anteriores. Para usar o v4.8 driver, você deve se conectar ao MongoDB Server 3.6 ou posterior. Para saber como atualizar seu sistema do MongoDB Server, consulte Notas de versão no manual do MongoDB Server.