Docs Menu
Docs Home
/ / /
Scala

ドライバーのバージョンをアップグレードする

項目一覧

  • Overview
  • 重大な変更
  • バージョン5.2 重大な変更
  • バージョン5.1 重大な変更
  • バージョン 5.0 の重大な変更
  • バージョン 4.8 重大な変更
  • バージョン 4.7 の重大な変更
  • バージョン 4.2 の重大な変更
  • バージョン 4.0 の重大な変更
  • サーバー リリースの互換性の変更
  • サーバー バージョン8.1 サポートの変更
  • ドライバー バージョン5.2 サーバー サポートの変更
  • ドライバー バージョン4.8 サーバー サポートの変更

このセクションでは、ドライバーを新しいバージョンにアップグレードするためにアプリケーションに加える必要がある変更を識別できます。

アップグレードする前に、次のアクションを実行してください。

  • 新しいドライバー バージョンが、アプリケーションが接続するMongoDB Server のバージョン およびアプリケーションが実行されるJavaランタイム環境(JRE)と互換性があることを確認します。互換性情報を表示するには、 互換性ページを参照してください。

  • アプリケーションが使用しているドライバーの現在のバージョンとアップグレード予定のバージョンとの間の重大な変更について、 重大な変更 セクションで対処します。 MongoDB Server のリリース互換性の変更の詳細については、「 Server リリースの互換性の変更 」セクションを参照してください。

Tip

将来ドライバーのバージョンをアップグレードする際にアプリケーションで必要になる可能性のある変更の数を最小限に抑えるには、 Stable APIを使用します。

重大な変更とは、特定のバージョンのドライバーにおける規則または動作の変更であり、アップグレードする前に対処しないと、アプリケーションが正常に動作しなくなる可能性があります。

このセクションの重大な変更は、それを導入したドライバーのバージョンによって分類されます。ドライバーのバージョンをアップグレードするときは、現在のバージョンとアップグレードのバージョン間のすべての重大な変更に対処してください。例、ドライバーを v4.0 から4.7 v4.0 にアップグレードする場合は、v4.7 にリストされているすべての重大な変更に対処します。

このドライバー バージョンでは、次の重大な変更が導入されています。

このドライバー バージョンでは、次の重大な変更が導入されています。

  • MONGODB-OIDC 認証メカニズムを使用する場合、authMechanismProperties 接続string値にカンマ文字を含めることはできません。

このドライバー バージョンでは、次の重大な変更が導入されています。

  • 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() メソッドを使用できます。

    VectorSearchOptions opts = vectorSearchOptions().filter(eq("x", 8));
  • org.mongodb.scala.ObservableImplicits.ToSingleObservableVoid 暗黙クラスを削除します。 org.reactivestreams.Publisher[Void] 型は org.mongodb.scala.SingleObservable[Void] に自動的に変換されなくなりました。このAPIでは、org.mongodb.scala.Observable[Void] ではなく org.mongodb.scala.Observable[Unit] も公開されています。

    詳細については、 Scala APIドキュメントの「 Observable 」トランザクションを参照してください。

  • ClusterSettingsClusterConnectionMode 設定を計算する方法を変更し、構成方法に関係なく指定されたレプリカセット名を使用することで、より一貫性を高めます。以前は、接続文字列に設定されている場合にのみレプリカセット名がドライバーと考慮されていました。

    例、次の 2 つのコード サンプルはどちらも ClusterConnectionMode.MULTIPLE という値を返します。以前は、2 番目の例ではClusterConnectionMode.SINGLE が返されていました。

    ClusterSettings.builder()
    .applyConnectionString(new ConnectionString("mongodb://127.0.0.1:27017/?replicaSet=replset"))
    .build()
    .getMode()
    ClusterSettings.builder()
    .hosts(Collections.singletonList(
    new ServerAddress("127.0.0.1", 27017)
    ))
    .requiredReplicaSetName("replset")
    .build()
    .getMode()
  • BsonDecimal128 値は、Decimal128 値と同じ方法でメソッド呼び出しに応答します。 BsonDecimal128.isNumber()true を返し、BsonDecimal128.asNumber() は同等の BsonNumber を返すようになりました。

  • ServerAddress を削除します メソッドgetSocketAddress()getSocketAddresses() メソッド。

    getSocketAddress()の代わりに、 java.net.InetAddressgetByName()インスタンス メソッドを使用します。

    getSocketAddresses()の代わりに、 java.net.InetAddressgetAllByName()インスタンス メソッドを使用します。

  • UnixServerAddress を削除します メソッドgetSocketAddress()getUnixSocketAddress() メソッド。

    getSocketAddress()の代わりに、 java.net.InetAddressgetByName()インスタンス メソッドを使用します。

    の代わりに getUnixSocketAddress()jnr.unixsocket.UnixSocketAddressのインスタンスを構築します。コンストラクターに UNIX ソケットファイルのフル パスを渡します。デフォルトでは 、 MongoDB は に配置された UNIX ソケットファイルを作成します。"/tmp/mongodb-27017.sock"UnixSocketAddress クラスの詳細については、 UnixSocketAddress APIドキュメント を参照してください。

  • Parameterizableインターフェースを削除します。 コーデックが パラメーター化された型を対象としている場合は、このインターフェースをカスタムCodec型に実装する代わりに、コーデックのCodecProviderCodecProvider.get()メソッドをオーバーライドします。

  • isSlaveOk()クラスとReadPreference TaggableReadPreferenceクラスから メソッドを削除します。レプリカセットのセカンダリ メンバーからの読み取りが読み込み設定(read preference)で許可されているかどうかを確認するには、代わりにこれらのクラスのisSecondaryOk()メソッドを使用します。

  • collStatsコマンドのDBCollection.getStats()DBCollection.isCapped()ヘルパーメソッドを削除します。 これらのメソッドの代わりに、 $collStats集計パイプラインステージを使用できます。

  • MapCodecIterableCodecクラスと クラスを削除します。MapCodecの代わりにMapCodecProvider を使用します。IterableCodecの代わりに、 CollectionCodecProviderを使用するか、 Collection Iterable型にIterableCodecProviderを使用します。

  • クラスと クラスから メソッドと メソッドを削除します。sharded()nonAtomic()MapReducePublisherMapReduceIterable

  • geoHaystackインデックスで使用する次のメソッドを排除します。

    • Indexes.geoHaystack()

    • IndexOptions.getBucketSize()

    • IndexOptions.bucketSize()

    代わりに、$geoNear 集計パイプラインステージまたは 地理空間クエリ演算子2 を dインデックスで使用できます。詳細については、 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バージョン v3.4 以前への接続のサポートを終了します。この変更について詳しくは、「 ドライバー バージョン4.8 サーバー サポートの変更 」セクションを参照してください。

  • アプリケーションで OSGコンテナにドライバーを配置し、 Javaレコードのエンコードとデコードでドライバーに依存する場合は、org.bson.codecs.record モジュールに明示的な依存関係を追加する必要があります。

  • RecordCodec は、List フィールドまたは Map フィールドの型パラメータとして指定されている POJO とレコードクラスを適切なレコードと POJO タイプに逆シリアル化します。以前は、このコーデックはこれらを Document 値として逆シリアル化していました。

    たとえば、次のレコード クラス定義は、 Chapter型パラメータを受け取るListを含むBookレコードを示しています。

    public record Book(String title, List<Chapter> chapters) {}
    public record Chapter(Integer number, String text) {}

    このバージョンから、コーデックはListのデータをDocument値ではなくChapterレコード クラスに逆シリアル化します。

このドライバー バージョンでは、次の重大な変更が導入されています。

  • setWindowFieldsビルダAPI はベータではなくなりました。新しいパイプラインステージ ビルダにより、メソッド バイナリとソースの互換性が破棄されます。新しい setWindowFields()メソッド署名の詳細については、 集計APIドキュメントを参照してください。

    アプリケーションが v 4.7より前のバージョンでこのビルダを使用している場合、 ソースコードを更新して新しいメソッド署名を使用し、バイナリを再構築します。

このドライバー バージョンでは、次の重大な変更が導入されています。

  • ObjectIdクラスとその serialVersionUIDフィールドを更新して、ドライバーのさまざまなバージョン間での直列化の互換性の問題を最小限に抑える新しい形式を使用します。

    ドライバー バージョン 4.2 以降を使用するアプリケーションが、ObjectId を含み、かつ以前のバージョンのドライバーによってシリアル化されたオブジェクトに対してJavaオブジェクト直列化を実行しようとすると、 Java はInvalidClassException をスローします。

    Javaオブジェクト直列化の詳細については、 Javaドキュメントの「 直列化可能なオブジェクト 」を参照してください。

このドライバー バージョンでは、次の重大な変更が導入されています。

  • 3.12 リリースで非推奨としてマークされているいくつかのクラスとメソッドを削除します。

  • 挿入ヘルパーメソッドを変更して、void ではなく InsertOneResult または InsertManyResultオブジェクトを返します。

  • BsonDocumentDocumentDbObject クラスの toJson() メソッドを変更して、厳密なJSON形式ではなく、緩和型JSON形式を返します。これにより、 JSONドキュメントはより読みやすくなりますが、32 ビットと 64 ビット整数の違いなど、 BSON type 情報の識別が困難になる可能性があります。アプリケーションが厳密なJSON形式に依存している場合は、データの読み取りまたは書き込みで厳密モードを使用します。

  • java.util.UUID 値のデフォルトのBSON表現を JAVA_LEGACY から UNSPECIFIED に変更します。 UUID 値を保存または検索するアプリケーションでは、使用する表現を明示的に指定する必要があります。 MongoClientSettingsオブジェクトの uuidRepresentationプロパティで表現を指定できます。

    指定する UUID 表現は、ドライバーが UUID をデコードする方法を厳密に制御します。バージョン 4.0 では、JAVA_LEGACY 表現はサブタイプ 3 でのみ機能します。ドライバーの以前のバージョンでは、JAVA_LEGACY 表現を指定すると、ドライバーはサブタイプ 3 と 4 のバイナリ オブジェクトを UUID として復号化していました。

    列挙型のメンバーのリストについては、UuidRepresentation 4.0v API ドキュメントを参照してください。

  • 接続プールは、 MongoDBへの接続を必要とする待機キュー スレッドや非同期タスクの数を制限しなくなりました。アプリケーションは、 MongoWaitQueueFullException をスローするようにドライバーに依存するのではなく、必要に応じてリクエストを調整します。

  • ドライバーは java.util.loggingパッケージを使用したログ記録は停止し、 SLF4J ロギングフレームワークのみをサポートするようになりました。

  • 埋め込みドライバーと Android ドライバーが削除されました。 アプリケーションがこれらのドライバーに依存する場合は、3.x Java ドライバー バージョン を引き続き使用する必要があります。

  • Javaドライバー用の uber JAR(mongo-java-drivermongodb-driver は公開されなくなりました。アプリケーションがこれらの uber JAR に依存している場合は、それらを依存関係として削除し、次のいずれかのパッケージを代わりに使用します。

    • アプリケーションで現在のAPIを使用している場合は、mongodb-driver-syncパッケージを依存関係として追加します。

    • アプリケーションでレガシーAPI を使用している場合は、mongodb-driver-legacyパッケージを依存関係として追加します。

  • いくつかのクラスでは、挿入ヘルパーメソッドへのメソッド署名の変更など、バイナリ互換性の中断が導入されています。ドライバーにリンクするすべてのクラスをこのバージョン以降に対して再コンパイルして、クラスが引き続き機能することを確認します。

サーバーリリースの互換性の変更とは、 MongoDB Server の一連のバージョンのサポートを廃止するScalaドライバーに対する変更です。

ドライバーは、サポート終了(EOL)に達すると、MongoDB Server バージョンのサポートを終了します。

EOL 製品の MongoDB サポートの詳細については、レガシー サポート ポリシー を参照してください。

Scalaドライバーの 3.x バージョンでは、 MongoDB Server v8.1を実行中MongoDBデプロイに接続できません。 MongoDB Server v8.1 以降では、 buildinfo コマンドに認証 が必要になるため、 v3.x ドライバーとの互換性がありません。

v5.2 ドライバーはMongoDB Server v のサポートを削除します。3.6 v5.2 ドライバーを使用するには、 MongoDB Serverが v4.0 以降である必要があります。 MongoDB Server配置をアップグレードする方法については、 MongoDB Serverマニュアルの リリースノート を参照してください。

v 4.8ドライバーは MongoDB Server v 3.4以前のサポートを削除します。 v 4.8を使用するには ドライバーに設定されている場合、MongoDB Server は v 3.6である必要があります。 以降に更新します。 MongoDB Server 配置をアップグレードする方法については、MongoDB Server マニュアルのリリースノートを参照してください。

戻る

新機能