Overview
このセクションでは、ドライバーを新しいバージョンにアップグレードするためにアプリケーションに加える必要がある変更を識別できます。
アップグレードする前に、次のアクションを実行してください。
新しいドライバー バージョンが、アプリケーションが接続するMongoDB Server のバージョン およびアプリケーションが実行されるJavaランタイム環境(JRE)と互換性があることを確認します。 互換性情報を表示するには、 互換性ページを参照してください。
アプリケーションが使用しているドライバーの現在のバージョンとアップグレード予定のバージョンとの間の重大な変更について、 重大な変更 セクションで対処します。MongoDB Server のリリース互換性の変更の詳細については、「 Server リリースの互換性の変更 」セクションを参照してください。
Tip
将来ドライバーのバージョンをアップグレードする際にアプリケーションで必要になる可能性のある変更の数を最小限に抑えるには、 Stable APIを使用します。
重大な変更
重大な変更とは、特定のバージョンのドライバーにおける規則または動作の変更であり、アップグレードする前に対処しないと、アプリケーションが正常に動作しなくなる可能性があります。
このセクションの重大な変更は、それを導入したドライバーのバージョンによって分類されます。ドライバーのバージョンをアップグレードするときは、現在のバージョンとアップグレードのバージョン間のすべての重大な変更に対処してください。例、ドライバーを v5.0 から v5.5 にアップグレードする場合は、v5.0 以降のバージョンからのすべての重大な変更に対処します。v5.5 にリストされたすべてを含む。
バージョン5.5 重大な変更
ドライバーはMongoDB Serverバージョン 4.0 と互換性をなくなりました。この変更について詳しくは、ドライバー バージョン 5.5 サーバー サポートの変更 セクションを参照してください。
バージョン5.2 重大な変更
このドライバー バージョンでは、次の重大な変更が導入されています。
MongoDB Server v3.6 のサポートを削除します。 この変更について詳しくは、「 ドライバー バージョン5.2 サーバー サポートの変更 」セクションを参照してください。
JVMドライバーのバージョン管理と一致するように mongodb-crypt 依存関係のバージョン管理を改訂します。
mongodb-crypt
の将来のバージョンはドライバーと一緒にリリースされ、同じバージョン番号を共有します。mongodb-crypt
の依存関係を v5.2.0 にアップグレードする必要がありますこのリリースのドライバーをアップグレードする際。
バージョン5.1 重大な変更
このドライバー バージョンでは、次の重大な変更が導入されています。
MONGODB-OIDC
認証メカニズムを使用する場合、authMechanismProperties
接続文字列値にカンマ文字を含めることはできません。authMechanismProperties
の値にカンマが含まれている場合は、MongoClientSettings
インスタンスの接続オプションとして値を渡します。
バージョン 5.0 の重大な変更
このドライバー バージョンでは、次の重大な変更が導入されています。
ConnectionId
クラスに次の変更を導入します。ConnectionId
コンストラクターは、int
型ではなくlong
型の値を 2 番目のパラメーターとして受け入れるようになりました。 同様に、コンストラクターは、3 つ目のパラメーターとして、型Integer
ではなくLong
の値を受け入れるようになりました。 この変更によりバイナリの互換性が失われるため、ConnectionId
コンストラクターを呼び出す既存のコードを再コンパイルしてください。withServerValue()
メソッドは、int
型ではなくlong
型のパラメータを受け入れるようになりました。 この変更によりバイナリの互換性が失われるため、withServerValue()
メソッドを呼び出すコードは再コンパイルする必要があります。getServerValue()
メソッドからは、型Long
ではなく 型の値が返されるようになりました。Integer
同様に、getLocalValue()
メソッドでは、int
型ではなくlong
型の値が返されます。 この変更によりバイナリとソースの両方の互換性が失われるため、これらのメソッドを使用するソースコードを更新し、バイナリを再構築してください。
パッケージの次のレコード注釈を、
org.bson.codecs.record.annotations
org.bson.codecs.pojo.annotations
パッケージの同じ名前の注釈に置き換えます。BsonId
BsonProperty
BsonRepresentation
SocketSettings.Builder.connectTimeout()
メソッドとSocketSettings.Builder.readTimeout()
メソッドのconnectTimeout
タイムアウト期間パラメータのデータ型を変更します。 このパラメータのデータ型は、int
ではなくlong
になりました。以前のバージョンでは、このパラメータは両方のメソッドでタイプ
int
でした。 この変更によりバイナリの互換性が損なわれるため、再コンパイルが必要になりますが、コードの変更は必要ありません。ベクトル検索を実行するときに等価フィルターを構築できるようになった
Beta
のみにリリースされたFilters.eqFull()
メソッドを削除します。 代わりに、次のコードに示すように、VectorSearchOptions
型をインスタンス化するときにFilters.eq()
メソッドを使用できます。val opts = vectorSearchOptions().filter(eq("x", 8)) ClusterSettings
がClusterConnectionMode
設定を計算する方法を変更し、構成方法に関係なく指定されたレプリカセット名を使用することで、より一貫性を高めます。 以前は、接続文字列に設定されている場合にのみレプリカセット名がドライバーと考慮されていました。例、次の 2 つのコード サンプルはどちらも
ClusterConnectionMode.MULTIPLE
という値を返します。 以前は、2 番目の例では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
値は、Decimal128
値と同じ方法でメソッド呼び出しに応答します。BsonDecimal128.isNumber()
はtrue
を返し、BsonDecimal128.asNumber()
は同等のBsonNumber
を返すようになりました。ServerAddress を削除します メソッド
getSocketAddress()
とgetSocketAddresses()
メソッド。getSocketAddress()
の代わりに、java.net.InetAddress
のgetByName()
インスタンス メソッドを使用します。getSocketAddresses()
の代わりに、java.net.InetAddress
のgetAllByName()
インスタンス メソッドを使用します。UnixServerAddress を削除します メソッド
getSocketAddress()
とgetUnixSocketAddress()
メソッド。getSocketAddress()
の代わりに、java.net.InetAddress
のgetByName()
インスタンス メソッドを使用します。getUnixSocketAddress()
の代わりにjnr.unixsocket.UnixSocketAddress
のインスタンスを構築します。 コンストラクターに UNIX ソケットファイルのフル パスを渡します。 デフォルトでは 、 MongoDB は"/tmp/mongodb-27017.sock"
に配置された UNIX ソケットファイルを作成します。UnixSocketAddress
クラスの詳細については、 UnixSocketAddress APIドキュメント を参照してください。Parameterizable
インターフェースを削除します。 コーデックが パラメーター化された型を対象としている場合は、このインターフェースをカスタムCodec
型に実装する代わりに、コーデックのCodecProvider
のCodecProvider.get()
メソッドをオーバーライドします。isSlaveOk()
クラスとReadPreference
TaggableReadPreference
クラスから メソッドを削除します。レプリカセットのセカンダリ メンバーからの読み取りが読み込み設定(read preference)で許可されているかどうかを確認するには、代わりにこれらのクラスのisSecondaryOk()
メソッドを使用します。collStats
コマンドのDBCollection.getStats()
とDBCollection.isCapped()
ヘルパーメソッドを削除します。 これらのメソッドの代わりに、$collStats
集計パイプラインステージを使用できます。MapCodec
IterableCodec
クラスと クラスを削除します。MapCodec
の代わりにMapCodecProvider
を使用します。IterableCodec
の代わりに、CollectionCodecProvider
を使用するか、Collection
Iterable
型にIterableCodecProvider
を使用します。クラスと クラスから メソッドと メソッドを削除します。
sharded()
nonAtomic()
MapReducePublisher
MapReduceIterable
geoHaystack
インデックスで使用する次のメソッドを排除します。Indexes.geoHaystack()
IndexOptions.getBucketSize()
IndexOptions.bucketSize()
代わりに、
$geoNear
集計パイプラインステージまたは 地理空間クエリ演算子 を2dインデックスで使用できます。 詳細については、 MongoDB Serverマニュアルの「 地理空間クエリ 」ページを参照してください。検索操作から
oplogReplay
オプションを削除します。 次のoplogReplay
メソッドは利用できなくなりました。DBCursor.oplogReplay()
DBCollectionFindOptions.isOplogReplay()
DBCollectionFindOptions.oplogReplay()
FindPublisher.oplogReplay()
FindIterable.oplogReplay()
次の
Exception
コンストラクタを削除します。MongoBulkWriteException(BulkWriteResult, List<BulkWriteError>, WriteConcernError, ServerAddress)
MongoCursorNotFoundException(long, ServerAddress)
MongoQueryException(ServerAddress, int, String)
MongoQueryException(ServerAddress, int, String, String)
MongoQueryException(MongoCommandException)
BulkWriteResult.acknowledged()
メソッドの次のオーバーロードを排除します。acknowledged(Type, int, List<BulkWriteUpsert>)
acknowledged(Type, int, Integer, List<BulkWriteUpsert>)
acknowledged(int, int, int, Integer, List<BulkWriteUpsert>)
次の
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, ...)
イベントの次のコンストラクターを削除します。
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)
WriteConcernError
クラスからerrorLabels
オプションを削除します。 これには、addLabel()
メソッドとgetErrorLabels()
メソッド、およびerrorLabels
パラメータを含むコンストラクターが含まれます。 代わりに、WriteConcernError
を含むMongoException
オブジェクトに含まれるエラー ラベルを使用できます。com.mongodb.event
パッケージから次のクラスを削除します。ConnectionAddedEvent
ConnectionPoolOpenedEvent
ConnectionRemovedEvent
ClusterListenerAdapter
ConnectionPoolListenerAdapter
ServerListenerAdapter
ServerMonitorListenerAdapter
このドライバーは、
ConnectionPoolListener
インターフェースから次の関連メソッドも削除します。connectionAdded()
connectionPoolOpened()
connectionRemoved()
パッケージの詳細については、
com.mongodb.event
APIドキュメントを参照してください。
listCollections
コマンドにauthorizedCollection
オプションを追加します。 これにより、MongoDatabase.listCollectionNames()
メソッドに重大なバイナリ変更が導入されます。 この変更にはソースコードの変更は必要ありませんが、このメソッドを使用するコードは再コンパイルする必要があります。ストリーム に関連する次のメソッドとタイプを削除します インターフェース:
MongoClientSettings.Builder.streamFactoryFactory()
使用して複数のドキュメントを挿入できます。 代わりにMongoClientSettings.Builder.transportSettings()
メソッドを使用してください。MongoClientSettings.getStreamFactoryFactory()
使用して複数のドキュメントを挿入できます。 代わりにMongoClientSettings.getTransportSettings()
メソッドを使用してください。NettyStreamFactoryFactory
クラス。 代わりに、TransportSettings.nettyBuilder()
メソッドを呼び出してNettyTransportSettings
オブジェクトを作成します。 次に、MongoClientSettings.Builder.transportSettings()
メソッドを呼び出して設定を適用します。NettyStreamFactory
クラス。AsynchronousSocketChannelStreamFactory
クラス。AsynchronousSocketChannelStreamFactoryFactory
クラス。BufferProvider
インターフェースを使用します。SocketStreamFactory
クラス。Stream
インターフェースを使用します。StreamFactory
インターフェースを使用します。StreamFactoryFactory
インターフェースを使用します。TlsChannelStreamFactoryFactory
クラス。
サーバー リリースの互換性の変更
サーバーリリースの互換性の変更とは、 MongoDB Server の一連のバージョンのサポートを廃止するKotlin Syncドライバーに対する変更です。
ドライバーは、サポート終了(EOL)に達すると、MongoDB Server バージョンのサポートを終了します。
EOL 製品の MongoDB サポートの詳細については、レガシー サポート ポリシー を参照してください。
サーバー バージョン8.1 サポートの変更
Kotlin Syncドライバーの 3.x バージョンを使用してMongoDB Server v8.1 以降を実行中MongoDBデプロイに接続することはできません。MongoDB Server v8.1 以降、buildinfo
コマンドは認証を必要とし、v3.x との互換性がありません。ドライバー。
ドライバー バージョン5.5 サーバー サポートの変更
v5.5 ドライバーはMongoDB Server 4.0 のサポートを削除します。v5.5 を使用するにはドライバーでは、 MongoDB Server 4.2 以降に接続する必要があります。MongoDB Server配置をアップグレードする方法については、 MongoDB Serverマニュアルの リリースノート を参照してください。
ドライバー バージョン5.2 サーバー サポートの変更
v5.2 ドライバーはMongoDB Server 3.6 のサポートを削除します。v5.2 を使用するにはドライバーでは、 MongoDB Server 4.0 以降に接続する必要があります。MongoDB Server配置をアップグレードする方法については、 MongoDB Serverマニュアルの リリースノート を参照してください。
ドライバー バージョン4.8 サーバー サポートの変更
v4.8 ドライバーはMongoDB Server 3.4 以前のサポートを削除します。v4.8 を使用するにはドライバーでは、 MongoDB Server 3.6 以降に接続する必要があります。MongoDB Server配置をアップグレードする方法については、 MongoDB Serverマニュアルの リリースノート を参照してください。