Docs Menu
Docs Home
/ / /
Java Sync Driver
/

リリースノート

次の新機能をご覧ください。

警告

このリリースにおける重大な変更

このドライバー バージョンでは、重大な変更が導入されています。 これらの変更のリストについては、アップグレード ガイドの「 バージョン5.0重大な変更 」セクションを参照してください。

警告

このリリースの廃止

ドライバーの将来のメジャー リリースで重大な変更を避けるため、非推奨のプログラム要素に依存するアプリケーション コードをすべて置き換えます。

このセクションには、次の情報が含まれています。

  • org.mongodb.scala.Observable.completeWithUnit()メソッドは非推奨です。 ドライバーが公開するのはorg.mongodb.scala.Observable[Unit] ではなくorg.mongodb.scala.Observable[Void] であるため、このメソッドは使用できなくなりました。これは、このリリースの Observables に関する重大な変更に関連します。

  • getElapsedTime()com.mongodb.event.ConnectionReadyEventConnectionCreatedEvent メソッドには、 の配信にかかる時間が含まれます。つまり、返される時間にはcom.mongodb.event.ConnectionPoolListener.connectionCreated()メソッドの期間が含まれます。

    com.mongodb.event.ConnectionCheckedOutFailedEventcom.mongodb.event.ConnectionCheckedOutEventgetElapsedTime()メソッドには、 com.mongodb.event.ConnectionCheckOutStartedEventの配信にかかる時間が含まれます。 つまり、返される時間にはcom.mongodb.eventConnectionPoolListener.connectionCheckOutStarted()メソッドの期間が含まれます。

5.0 ドライバー リリースでは、次の機能が導入されています。

  • listCollectionsコマンドのauthorizedCollectionオプションのサポートを追加します。 これは、 com.mongodb.client.MongoDatabase.listCollectionNames()メソッドを変更することで行われていました。 戻り値の型はcom.mongodb.client.ListCollectionNamesIterableになりましたが、以前はMongoIterable<String>でした。 この変更により、 ListCollectionNamesIterable.authorizedCollections()メソッドを使用してauthorizedCollectionsオプションを指定して戻り値を構成できるようになります。 次のクラスとインターフェースに対して同等の変更が加えられました。

    • com.mongodb.reactivestreams.client.MongoDatabase

    • org.mongodb.scala.MongoDatabase

    • com.mongodb.kotlin.client.MongoDatabase

    • com.mongodb.kotlin.client.coroutine.MongoDatabase

    これらの変更により、 listCollectionsNames() メソッド にバイナリを重大する変更が導入されます。 MongoDatabase.listCollectionNames()メソッドとauthorizedCollectionsオプションの詳細については、 listCollections Server のマニュアル ページ またはコレクションのリストを取得する を参照してください。

このセクションには、次の情報が含まれています。

警告

このリリースの廃止

ドライバーの将来のメジャー リリースで重大な変更を避けるため、非推奨のメソッドとタイプに依存するすべてのアプリケーション コードを置き換えます。

4.11 ドライバー リリースでは、次の項目が非推奨になります。

  • DBCollectionクラスのgetStats()インスタンス メソッドとisCapped()インスタンス メソッドは非推奨です。 対応するサーバーコマンドは、MongoDB v6.2 以降では非推奨です。 これらのメソッドによって提供される情報を取得するには、代わりに$collStats集計パイプライン ステージを使用します。 次のコード例に示すように、集計を実行できます。

    Cursor cursor = collection.aggregate(Arrays.asList(
    new BasicDBObject("$collStats",
    new BasicDBObject("storageStats", new BasicDBObject()))),
    AggregationOptions.builder().build()
    );

    コレクションが Capped コレクションであるかどうかを判断するには、前述の例の集計でCursorインスタンスによって返されたstorageStats.cappedフィールドの値にアクセスします。

    $collStats集計演算子の詳細については、 $collStats(集計)サーバーのマニュアル エントリを参照してください。

  • 次のネットワーク アドレス関連のメソッドは非推奨であり、v5.0 で削除されます。

    • ServerAddress メソッドは getSocketAddress() メソッドと getSocketAddresses() メソッドです。

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

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

    • UnixServerAddress メソッド getUnixSocketAddress()

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

  • StreamFactory インターフェースに関連する次のメソッドとタイプは非推奨となり、 v5.0 で削除される予定です。

    • streamFactoryFactory() メソッド MongoClientSettings.Builder

    • getStreamFactoryFactory() メソッド MongoClientSettings

    • NettyStreamFactoryFactory クラス

    • NettyStreamFactory クラス

    • AsynchronousSocketChannelStreamFactory クラス

    • AsynchronousSocketChannelStreamFactoryFactory クラス

    • BufferProvider クラス

    • SocketStreamFactory クラス

    • Stream クラス

    • StreamFactory クラス

    • StreamFactoryFactory クラス

    • TlsChannelStreamFactoryFactory クラス

    MongoClientSettings.Builder.streamFactoryFactory()を使用して Netty を構成する場合、コードは次のようになります。

    import com.mongodb.connection.netty.NettyStreamFactoryFactory;
    // ...
    MongoClientSettings settings = MongoClientSettings.builder()
    .streamFactoryFactory(NettyStreamFactoryFactory.builder().build())
    .build();

    次の例に示すように、このコードを TransportSettings.nettyBuilder() に置き換えます。

    import com.mongodb.connection.TransportSettings;
    // ...
    MongoClientSettings settings = MongoClientSettings.builder()
    .transportSettings(TransportSettings.nettyBuilder().build())
    .build();

4.11 ドライバー リリースの新機能には、次のものが含まれます。

4.10 ドライバー リリースの新機能には、次のものが含まれます。

  • Accumulators.percentile()Accumulators.median()統計集計用の メソッドと メソッドの実装。

  • com.mongodb.client.model.searchパッケージ内のインターフェースが@Evolvingではなく@Sealedとしてマークされるようになりました。 リンクされたインターフェースは、ライブラリの利用者によって拡張または実装されてはなりません。

  • ドライバーが再試行操作のために重複したログ メッセージを出力する問題を解決しました。 ドライバーは再試行操作ごとに 1 つのログ メッセージを正しく出力するようになりました。

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

  • カスタム DNS リゾルバのサポート。

  • Queryable Encryption (QE)のサポート QE 機能を使用するための要件の詳細については、「 Queryable Encryption ドライバーの互換性テーブル 」を参照してください。

重要

集計式操作はbeta

このドライバー バージョンでは、集計式を作成するための API が導入されています。 この機能はbetaフェーズにあります。

4.9 ドライバー リリースの新機能には、次のものが含まれます。

  • BsonCreatorによって注釈が付けられたコンストラクターに、 BsonPropertyまたはBsonId以外の注釈を持つパラメーターが含まれているかどうかを識別する新しい例外を追加しました。

  • org.mongodb.driver.protocol.commandパッケージによって報告されるコマンド モニタリング メッセージの ログ メッセージ形式を変更しました。

  • 集計ヘルパークラスに $documents 集計パイプライン集計ステージのサポートを追加しました。

  • MongoClientSettings.Builder.applyToLoggerSettings() を追加しました およびLoggerSettings.Builder.maxDocumentLength() メソッドを使用すると、ログメッセージでBSONドキュメントの拡張JSON表現の最大長を指定できます。

警告

v4.8 での重大な変更

v4.8 ドライバーに重大な変更が含まれています。詳細については、「 バージョン4.8 重大な変更 」および「 ドライバー4.8 バージョン サーバー リリース サポートの変更 」を参照してください。

重要

非推奨に関する通知

MapCodecクラスとIterableCodecクラスは非推奨です。 MapCodecの代わりにMapCodecProvider を使用します。IterableCodecの代わりに、 CollectionCodecProviderを使用するか、 Collection Iterable型にIterableCodecProviderを使用します。

4.8 ドライバー リリースによる動作の変更は次のとおりです。

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

  • 新しい接続メッセージのログ記録。 INFOではなくDEBUGレベルで実行されます。

4.8 ドライバー リリースの新機能には、次のものが含まれます。

  • Amazon Web Servicesによる認証をサポートします。 ドライバーは、 Amazon Web Services SDK バージョン 1 とバージョン 2 の両方でオプションの 依存関係を取得します。

  • 使用中の暗号化のために、GCP と Azure の両方の環境から認証情報を取得するためのサポート。

  • ジェネリック パラメーターを持つコンポーネントを含むレコードの逆シリアル化をサポートします。

  • より具体的なコンテナ タイプを持つコンポーネントを含むレコードの逆シリアル化をサポートします。たとえば、 SortedSetNavigableMapLinkedListTreeSetなどです。

  • 再帰レコードタイプ(タイプ定義にサイクルが含まれているレコード)のサポート。

  • MongoDB v6.1 以降で showExpandedEventsサーバー機能が有効になっている場合に、 変更ストリームアップデート イベントに disambiguatedPathsフィールドを含めます。このフィールドの詳細については、 getDistributionPaths() APIドキュメントを参照してください。拡張イベントサーバーのドキュメントから showExpandedEvents 設定の詳細を確認します。

4.7.1ドライバーは、 クライアント側のフィールドレベル暗号化 とQueryable Encryptionに影響するバグをパッチします。このバグにより、 GCP KMS またはAzure Key Vault でホストされているカスタマー マスター キーで暗号化された DEK(データ暗号化キー)をローテーションするときにデータが破損する可能性があります。 このバグは RewrapManyDataKey メソッドのドライバーのバージョン 4.7.0 に存在し、DEK が失われる原因でした。

重要

キーヴォールトコレクションのバックアップ

DEK をローテーションする前は、必ずキーヴォールトコレクションをバックアップしてください。DEK を紛失すると、それらのキーで暗号化されたすべてのデータにアクセスできなくなります。

警告

v4.7 での重大な変更

v4.7 ドライバーには重大な変更が含まれています。 詳細については、「バージョン 4.7 の重大な変更 」を参照してください。

4.7 ドライバー リリースの新機能には、次のものが含まれます。

  • MongoDB 6.0 の完全なサポートを追加しました。

  • 次の変更ストリーム サポートの改善を追加しました。

    • 変更ストリーム の変更前と変更後のイメージのサポートを強化します。変更ストリーム監視ヘルパーが、fullDocument オプションに whenAvailablerequired を受け入れるようになりました。詳細については、変更ストリーム の参照ドキュメントを参照してください。

    • 新しいfullDocumentBeforeChangeオプションを追加し、 whenAvailablerequiredを受け入れます。

    • MongoDB コレクションで表示するように構成された場合、変更イベントにはfullDocumentBeforeChangeフィールドが含まれるようになりました。

    • 変更ストリームのshowExpandedEventsサポートを追加しました。

    • ChangeStreamDocumentクラスにwallTimeのサポートを追加しました。

  • クラスター化インデックスの作成 のサポートを追加しました。

  • 自動暗号化のサポートを含む、 Queryable Encryptionに関連する新機能のサポート( MongoDB v 6.0 Enterprise 以降が必要です)と手動暗号化。

    • 新しいQueryable Encryption共有ライブラリのサポートにより、mongocryptd プロセスが不要になります。Queryable Encryption共有ライブラリには、org.mongodb:mongodb-crypt バージョン 1.5.1.1 以降が必要です。

  • 暗号化キー管理用の新しい API を追加しました。

  • $search / $searchMeta (Atlas のみ)、 $densify$fillなど、より多くの集計ステージにビルダ API メソッドを追加しました。 これらのメソッドの詳細については、集計ビルダページをご覧ください。

  • POJO のエンコードとデコードで使用できるBsonExtraElementsアノテーションを追加しました。 BsonExtraElementsにより、開発者はそれらの新しいフィールドを明示的にマッピングする必要なく、将来新しいフィールドを受け取る可能性のあるオブジェクトのデコードが可能になります。

  • 次のようなパフォーマンスの最適化。

    • サーバー セッション プールとバッファ プールのロックフリーの実装。

    • 終了処理の代わりに Java の クリーンアップ API を使用するDBCursorの新しいクリーンアップ実装で、Java 9 以降で利用可能です。

  • setWindowFieldsビルダAPIはbeta機能ではなくなりました。 API の変更により、バイナリとソースの互換性の両方が中断されます。 詳細については、「バージョン 4.7 の重大な変更 」を参照してください。

4.6 Java ドライバー リリースの新機能には、次のものが含まれます。

  • バッファ プールがすべてのMongoClientインスタンスで共有されるようになりました。 バッファ プールは、1 分間アイドル状態だったバッファをプルします。

  • クライアント側フィールドレベル暗号化(CSFLE)のAmazon Web Services KMS 認証情報のプロバイダーを指定するためのAPIを追加しました。 詳細については、 AutoEncryptionSettings.Builder. kmsProviderProviderProperty App Servicesupsers()および ClientEncryptionSettings.Builder. kmsProviderProperty App Servicesuplers()詳細については、 APIドキュメントを参照してください。

  • Apple M1 ARM ベースのハードウェアで、CSFLE の依存関係であるorg.mongodb:mongodb-cryptとの互換性を追加しました。

  • ドライバーでカスタム DNSクライアントを指定できるようにするためのサービス プロバイダー インターフェイス(SPI)を追加しました。詳細については、「 DnsClient および DnsClientProvider インターフェースAPIドキュメント 」を参照してください。

  • JavaレコードとBSONドキュメント間でエンコードおよびデコードするためのドライバー サポートを追加しました。これはデフォルトで有効になっています。詳細については、「 ドキュメントデータ形式: レコード 」を参照してください。

DNS サーバーが存在しないドメインを示す IXDomain エラーを返す場合、4.5.1 ドライバーは例外をスローしなくなります。

4.5 Java ドライバー リリースの新機能には、次のものが含まれます。

  • SRV リソース レコードのカスタム サービス名を指定するためのサポートを追加しました。 詳細については、接続オプションガイドのsrvServiceName設定を参照してください。

  • CodecRegistries.withUuidRepresentation()メソッドを使用して、コーデック レジストリで UUID 表現をカスタマイズするためのサポートを追加しました。

  • ClusterSettingsServerSettingsConnectionPoolSettingsビルダでリスナー設定をオーバーライドするためのサポートを追加しました。

  • ClusterListenerServerListenerServerMonitorListener が受信するすべてのイベントは、リスナーが異なる MongoClient インスタンスによって共有されていない場合、事前に発生する関係を使用して完全に順序付けられるようになりました。順序付けの前の実行の詳細については、Java言語仕様の「順序付けの前の実行」を参照してください。

  • クラスから EnumCodecEnumCodecProvider型のコーデックを個別にサポートするようにenumPojoCodec クラスと クラスを追加しました。インターフェースと インターフェースからアクセスできる デフォルトのコーデック レジストリにMongoClientSettings Bsonenumコーデック クラスが含まれるようになりました。アプリケーションでカスタム列挙コーデックとデフォルトのレジストリの 1 つを使用する場合は、コーデックの上書きに関するセクションで説明されているように、それらを順序付けてください。

  • ドライバーのバージョン 4.4 および 4.3 に影響するパフォーマンスの問題を解決しました。 このバージョンのパフォーマンスは、4.2 のパフォーマンスと同様です。

  • クラスター説明の取得に関連するエラーがonErrorサブスクリプションのコールバックに渡されない問題を解決しました

  • 圧縮を有効にして接続すると、 ByteBufインスタンスが解放される問題を解決しました。

  • javax.annotation.*パッケージの不要な依存関係をorg.mongodb.driver-core OSGi バンドルから削除しました。

4.4 Java ドライバー リリースの新機能には、次のものが含まれます。

  • MongoDB 5.1 との互換性および Java 17 のサポート

  • インデックス ヒントのサポートを追加 AggregateIterable

  • セカンダリの$merge$outの集計ステージのサポートを追加しました

  • UpdatesビルダでのmergeObjects()メソッドの使用

  • DocumentCodec は、 IterableまたはMapインスタンスに書き込むときにCodecRegistryを無視しません

4.3 Java ドライバー リリースの新機能には、次のものが含まれます。

  • MongoDB Stable API のサポートを追加しました。 詳しくは、 Stable API ガイド をご覧ください。

    注意

    2022 年 2 月以降、 Versioned APIStable APIという名前に変更しました。 この用語の変更によるコンセプトと機能についての変更はありません。

  • MongoDB Atlas サーバーレスインスタンスへの接続のサポートを追加しました。 セットアップの詳細については、 新しいサーバーレスインスタンスの作成に関するドキュメントを参照してください。

  • ウィンドウ演算子を使用できるようにするためにsetWindowFieldsパイプライン ステージのビルダ API を追加しました

  • Netty io.netty.handler.ssl.SslContext の設定のサポートを追加しました。

  • スナップショット読み取りのサポートを に追加 ClientSession

  • 接続プールごとに新しい接続を確立する速度を制限する

  • 挿入または置き換えるドキュメントのフィールド名に許容される文字に関するほとんどの制限を削除しました。 これは、これらの制限のクライアント側の適用に依存しているアプリケーションの動作の変更です。

次の表は、ドキュメントのフィールド名に使用できる文字の制限ステータスを示しています。

文字
操作
説明

.

挿入と置換

この文字を含むフィールド名に対する制限を解除しました。

$

Insert

この文字で始まるフィールド名の制限を削除しました。

$

置換

この文字を含むフィールド名に対するネストされたドキュメントの制限を削除しました。

$

置換

この文字で始まるフィールド名について、最上位ドキュメントで制限を維持しました。 これにより、更新操作を使用する際に置換操作を使用するという誤った使用を防止できます。

注意

ドル記号のプレフィックスが付いたキーまたはドットのキーを使用した未確認の書込みが、5.0 より前のバージョンでは暗黙で拒否される可能性があります。 フィールド名に関する一部の制限は、サーバー内で引き続き適用されます。

警告

v4.2 での重大な変更

v4.2 ドライバーには重大な変更が含まれています。 詳細については、「バージョン 4.2 の重大な変更 」を参照してください。

4.2 Java ドライバー リリースの新機能には、次のものが含まれます。

  • クライアント側のフィールドレベル暗号化に Azure と GCP キー ストアを追加しました

  • 複数の認証リクエストで再利用するために Kerberos キャッシュ チケットを追加しました

  • MongoClientSettings または ConnectionString を構成として持つ MongoClients インスタンスを追加しました

  • 検索コマンドと集計コマンドでの explain() メソッドの使用

  • 中間マップ表現を回避して、JSON からのエンコードとJSONへのデコードの効率を高めるために JsonObject クラスを追加しました

  • POJO クラスでObjectId BSON値をString として表現できる BsonRepresentation 注釈を追加しました

  • Filters.empty() を追加しましたメソッド

4.1 Java ドライバー リリースの新機能には、次のものが含まれます。

  • 計画されたメンテナンス イベント中に、クライアントが認識するフェイルオーバー時間を大幅に短縮

  • update() メソッドと delete() メソッドがインデックスのヒントをサポートするようになりました

  • メソッドは、find() RAMで実行するために多くのメモリを必要とするソートを許可DiskUse() をサポートします

  • MONGODB-Amazon Web Amazon Web Services ( Amazon Web Services )の IAM(Identity and Access Management、ID とアクセス管理)認証情報を使用する Amazon Amazon Web Services認証メカニズムのサポートを追加しました

  • 認証に必要なサーバーへのラウンドトリップが少なくなり、接続設定が高速化されます

警告

v4.0 での重大な変更

v4.0 ドライバーには重大な変更が含まれています。 詳細については、「バージョン 4.0 の重大な変更 」を参照してください。

このリリースでは新機能は追加されません。

戻る

参照

項目一覧