次の新機能をご覧ください。
5.0 の新機能
警告
このリリースにおける重大な変更
このドライバー バージョンでは、重大な変更が導入されています。 これらの変更のリストについては、アップグレード ガイドの「 バージョン5.0重大な変更 」セクションを参照してください。
警告
このリリースの廃止
ドライバーの将来のメジャー リリースで重大な変更を避けるため、非推奨のプログラム要素に依存するアプリケーション コードをすべて置き換えます。
このセクションには、次の情報が含まれています。
5.0 での廃止
org.mongodb.scala.Observable.completeWithUnit()
メソッドは非推奨です。 ドライバーが公開するのはorg.mongodb.scala.Observable[Unit]
ではなくorg.mongodb.scala.Observable[Void]
であるため、このメソッドは使用できなくなりました。これは、このリリースの Observables に関する重大な変更に関連します。
5.0 での動作の変更
getElapsedTime()
com.mongodb.event.ConnectionReadyEvent
のConnectionCreatedEvent
メソッドには、 の配信にかかる時間が含まれます。つまり、返される時間にはcom.mongodb.event.ConnectionPoolListener.connectionCreated()
メソッドの期間が含まれます。com.mongodb.event.ConnectionCheckedOutFailedEvent
とcom.mongodb.event.ConnectionCheckedOutEvent
のgetElapsedTime()
メソッドには、com.mongodb.event.ConnectionCheckOutStartedEvent
の配信にかかる時間が含まれます。 つまり、返される時間にはcom.mongodb.eventConnectionPoolListener.connectionCheckOutStarted()
メソッドの期間が含まれます。
5.0 の新機能
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 の新機能
このセクションには、次の情報が含まれています。
4.11 での非推奨
警告
このリリースの廃止
ドライバーの将来のメジャー リリースで重大な変更を避けるため、非推奨のメソッドとタイプに依存するすべてのアプリケーション コードを置き換えます。
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.InetAddress
のgetByName()
インスタンス メソッドを使用します。getSocketAddresses()
の代わりに、java.net.InetAddress
のgetAllByName()
インスタンス メソッドを使用します。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.11 ドライバー リリースの新機能には、次のものが含まれます。
SOCKS5 プロキシを使用した MongoDB への接続のサポート。 詳しくは、「 SOCKS5 プロキシを使用して MongoDB に接続する 」を参照してください。
プロキシ機能を使用するときにドメイン名を検証する方法に関連する問題が修正され、最上位ドメインで 6 文字を超えるドメイン名を使用できるようになりました。
16 MB を超える 変更ストリーム イベントのフラグメントを識別するために、
ChangeStreamDocument
クラスにgetSplitEvent()
メソッドを追加しました。 16 MB を超えるイベントを処理するには、変更ストリームの集計ステージ$changeStreamSplitLargeEvent
を使用する必要があります。 詳細については、「大規模な変更ストリーム イベントの分割 」を参照してください。$vectorSearch
の集計ステージ ビルダを追加しました。 詳細については、「 Atlas Vector Search 」を参照してください。Atlas Search インデックス マネジメント ヘルパーを追加しました。 詳しくは、「 Atlas Search インデックス 」を参照してください。
Snappyおよびzstd圧縮ライブラリの依存関係バージョンを更新しました。 現在の依存関係バージョンの詳細については、「ネットワーク圧縮 」を参照してください。
接続プール イベントの期間をモニタリングするために、次のクラスに
getElapsedTime()
メソッドを追加しました。Java 21 仮想スレッドと構造化同時実行性のサポート。 仮想スレッドの不要な固定を回避し、スレッドの中断された状態を保持するようにドライバー内部がアップデートされました。後者はキャンセルに使用される構造化同時実行性において重要であるためです。
仮想スレッドの詳細については、Virtual Threads JDK の拡張提案」を参照してください。構造化同時実行の詳細については、構造化同時実行 JDK 機能強化の提案 を参照してください。
次のタイプの API ドキュメントを更新しました。
4.10 の新機能
4.10 ドライバー リリースの新機能には、次のものが含まれます。
Accumulators.percentile()
Accumulators.median()
統計集計用の メソッドと メソッドの実装。com.mongodb.client.model.search
パッケージ内のインターフェースが@Evolving
ではなく@Sealed
としてマークされるようになりました。 リンクされたインターフェースは、ライブラリの利用者によって拡張または実装されてはなりません。ドライバーが再試行操作のために重複したログ メッセージを出力する問題を解決しました。 ドライバーは再試行操作ごとに 1 つのログ メッセージを正しく出力するようになりました。
org.bson.codecs.Parameterizable
インターフェースは非推奨です。 コーデックが パラメーター化された型を対象としている場合は、このインターフェースをカスタムCodec
型に実装する代わりに、コーデックのCodecProvider
のCodecProvider.get()
メソッドをオーバーライドします。カスタム DNS リゾルバのサポート。
Queryable Encryption (QE)のサポート QE 機能を使用するための要件の詳細については、「 Queryable Encryption ドライバーの互換性テーブル 」を参照してください。
4.9 の新機能
4.9 ドライバー リリースの新機能には、次のものが含まれます。
BsonCreator
によって注釈が付けられたコンストラクターに、BsonProperty
またはBsonId
以外の注釈を持つパラメーターが含まれているかどうかを識別する新しい例外を追加しました。org.mongodb.driver.protocol.command
パッケージによって報告されるコマンド モニタリング メッセージの ログ メッセージ形式を変更しました。集計ヘルパークラスに
$documents
集計パイプライン集計ステージのサポートを追加しました。MongoClientSettings.Builder.applyToLoggerSettings() を追加しました およびLoggerSettings.Builder.maxDocumentLength() メソッドを使用すると、ログメッセージでBSONドキュメントの拡張JSON表現の最大長を指定できます。
4.8 の新機能
警告
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 の両方の環境から認証情報を取得するためのサポート。
ジェネリック パラメーターを持つコンポーネントを含むレコードの逆シリアル化をサポートします。
より具体的なコンテナ タイプを持つコンポーネントを含むレコードの逆シリアル化をサポートします。たとえば、
SortedSet
、NavigableMap
、LinkedList
、TreeSet
などです。再帰レコードタイプ(タイプ定義にサイクルが含まれているレコード)のサポート。
MongoDB v6.1 以降で
showExpandedEvents
サーバー機能が有効になっている場合に、 変更ストリームアップデート イベントにdisambiguatedPaths
フィールドを含めます。このフィールドの詳細については、 getDistributionPaths() APIドキュメントを参照してください。拡張イベントサーバーのドキュメントからshowExpandedEvents
設定の詳細を確認します。
4.7.1 での新機能
4.7.1ドライバーは、 クライアント側のフィールドレベル暗号化 とQueryable Encryptionに影響するバグをパッチします。このバグにより、 GCP KMS またはAzure Key Vault でホストされているカスタマー マスター キーで暗号化された DEK(データ暗号化キー)をローテーションするときにデータが破損する可能性があります。 このバグは RewrapManyDataKey
メソッドのドライバーのバージョン 4.7.0 に存在し、DEK が失われる原因でした。
重要
キーヴォールトコレクションのバックアップ
DEK をローテーションする前は、必ずキーヴォールトコレクションをバックアップしてください。DEK を紛失すると、それらのキーで暗号化されたすべてのデータにアクセスできなくなります。
4.7 の新機能
4.7 ドライバー リリースの新機能には、次のものが含まれます。
MongoDB 6.0 の完全なサポートを追加しました。
次の変更ストリーム サポートの改善を追加しました。
変更ストリーム の変更前と変更後のイメージのサポートを強化します。変更ストリーム監視ヘルパーが、
fullDocument
オプションにwhenAvailable
とrequired
を受け入れるようになりました。詳細については、変更ストリーム の参照ドキュメントを参照してください。新しい
fullDocumentBeforeChange
オプションを追加し、whenAvailable
とrequired
を受け入れます。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 の新機能
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ドキュメント間でエンコードおよびデコードするためのドライバー サポートを追加しました。これはデフォルトで有効になっています。詳細については、「 ドキュメントデータ形式: レコード 」を参照してください。
4.5.1 での新機能
DNS サーバーが存在しないドメインを示す IXDomain エラーを返す場合、4.5.1 ドライバーは例外をスローしなくなります。
4.5 で追加された機能
4.5 Java ドライバー リリースの新機能には、次のものが含まれます。
SRV リソース レコードのカスタム サービス名を指定するためのサポートを追加しました。 詳細については、接続オプションガイドの
srvServiceName
設定を参照してください。CodecRegistries.withUuidRepresentation()
メソッドを使用して、コーデック レジストリで UUID 表現をカスタマイズするためのサポートを追加しました。ClusterSettings
、ServerSettings
、ConnectionPoolSettings
ビルダでリスナー設定をオーバーライドするためのサポートを追加しました。ClusterListener
、ServerListener
、ServerMonitorListener
が受信するすべてのイベントは、リスナーが異なる MongoClient インスタンスによって共有されていない場合、事前に発生する関係を使用して完全に順序付けられるようになりました。順序付けの前の実行の詳細については、Java言語仕様の「順序付けの前の実行」を参照してください。クラスから
EnumCodec
EnumCodecProvider
型のコーデックを個別にサポートするようにenum
PojoCodec
クラスと クラスを追加しました。インターフェースと インターフェースからアクセスできる デフォルトのコーデック レジストリにMongoClientSettings
Bson
enum
コーデック クラスが含まれるようになりました。アプリケーションでカスタム列挙コーデックとデフォルトのレジストリの 1 つを使用する場合は、コーデックの上書きに関するセクションで説明されているように、それらを順序付けてください。ドライバーのバージョン 4.4 および 4.3 に影響するパフォーマンスの問題を解決しました。 このバージョンのパフォーマンスは、4.2 のパフォーマンスと同様です。
クラスター説明の取得に関連するエラーが
onError
サブスクリプションのコールバックに渡されない問題を解決しました圧縮を有効にして接続すると、
ByteBuf
インスタンスが解放される問題を解決しました。javax.annotation.*
パッケージの不要な依存関係をorg.mongodb.driver-core
OSGi バンドルから削除しました。
4.4 の新機能
4.4 Java ドライバー リリースの新機能には、次のものが含まれます。
MongoDB 5.1 との互換性および Java 17 のサポート
インデックス ヒントのサポートを追加
AggregateIterable
セカンダリの
$merge
と$out
の集計ステージのサポートを追加しましたUpdates
ビルダでのmergeObjects()
メソッドの使用DocumentCodec
は、Iterable
またはMap
インスタンスに書き込むときにCodecRegistryを無視しません
4.3 の新機能
4.3 Java ドライバー リリースの新機能には、次のものが含まれます。
MongoDB Stable API のサポートを追加しました。 詳しくは、 Stable API ガイド をご覧ください。
注意
2022 年 2 月以降、 Versioned APIはStable APIという名前に変更しました。 この用語の変更によるコンセプトと機能についての変更はありません。
MongoDB Atlas サーバーレスインスタンスへの接続のサポートを追加しました。 セットアップの詳細については、 新しいサーバーレスインスタンスの作成に関するドキュメントを参照してください。
ウィンドウ演算子を使用できるようにするために
setWindowFields
パイプライン ステージのビルダ API を追加しましたNetty io.netty.handler.ssl.SslContext の設定のサポートを追加しました。
スナップショット読み取りのサポートを に追加
ClientSession
接続プールごとに新しい接続を確立する速度を制限する
挿入または置き換えるドキュメントのフィールド名に許容される文字に関するほとんどの制限を削除しました。 これは、これらの制限のクライアント側の適用に依存しているアプリケーションの動作の変更です。
次の表は、ドキュメントのフィールド名に使用できる文字の制限ステータスを示しています。
文字 | 操作 | 説明 |
---|---|---|
. | 挿入と置換 | この文字を含むフィールド名に対する制限を解除しました。 |
$ | Insert | この文字で始まるフィールド名の制限を削除しました。 |
$ | 置換 | この文字を含むフィールド名に対するネストされたドキュメントの制限を削除しました。 |
$ | 置換 | この文字で始まるフィールド名について、最上位ドキュメントで制限を維持しました。 これにより、更新操作を使用する際に置換操作を使用するという誤った使用を防止できます。 |
注意
ドル記号のプレフィックスが付いたキーまたはドットのキーを使用した未確認の書込みが、5.0 より前のバージョンでは暗黙で拒否される可能性があります。 フィールド名に関する一部の制限は、サーバー内で引き続き適用されます。
4.2 の新機能
4.2 Java ドライバー リリースの新機能には、次のものが含まれます。
クライアント側のフィールドレベル暗号化に Azure と GCP キー ストアを追加しました
複数の認証リクエストで再利用するために Kerberos キャッシュ チケットを追加しました
MongoClientSettings
またはConnectionString
を構成として持つ MongoClients インスタンスを追加しました中間マップ表現を回避して、JSON からのエンコードとJSONへのデコードの効率を高めるために JsonObject クラスを追加しました
POJO クラスで
ObjectId
BSON値をString
として表現できる BsonRepresentation 注釈を追加しましたFilters.empty() を追加しましたメソッド
4.1 の新機能
4.1 Java ドライバー リリースの新機能には、次のものが含まれます。
計画されたメンテナンス イベント中に、クライアントが認識するフェイルオーバー時間を大幅に短縮
メソッドは、
find()
RAMで実行するために多くのメモリを必要とするソートを許可DiskUse() をサポートしますMONGODB-Amazon Web Amazon Web Services ( Amazon Web Services )の IAM(Identity and Access Management、ID とアクセス管理)認証情報を使用する Amazon Amazon Web Services認証メカニズムのサポートを追加しました
認証に必要なサーバーへのラウンドトリップが少なくなり、接続設定が高速化されます
4.0 の新機能
このリリースでは新機能は追加されません。