次の新機能をご覧ください。
5.3 の新機能
5.3 ドライバー リリースには、次の変更、修正、機能が含まれています。
重要: 次のマイナー リリースでは、 MongoDB Serverバージョン4.0 のサポートが終了し、サポートされる最小バージョンが4.2 に引き上げられます。重大な変更に対応するために、アプリケーションに変更を加えることをお勧めします。 アップグレードの詳細については、サーバー マニュアルの「 リリースノート 」セクションを参照してください。
ベクトルのストレージと検索用のBSONバイナリ サブタイプ 9 を実装するために
BinaryVector
クラスを追加します。 このクラスは、Double
インスタンスのリストと比較して、値のより効率的なストレージを提供します。 ベクトルに含まれる要素の型に基づいて、次のベクトル型を作成できます。Int8BinaryVector
: 8 ビット符号付き整数のベクトルFloat32BinaryVector
: 浮動小数点数のベクトルPackedBitBinaryVector
: バイナリ量子化ベクトル(ベータで、一般利用可能になるまでに変更される可能性があります)
この機能の詳細については、Atlas ドキュメントの「 ベクトル量化 」を参照してください。Atlas ベクトル検索機能を使用するときにこのタイプを使用する方法の詳細については、「 Atlas ベクトル検索ガイド 」を参照してください。
接続プールの実装から明示的な均等性を削除します。 この変更により、多くのアプリケーションスレッドで
MongoClient
インスタンスを使用すると、スループットが向上する可能性があります。 ただし、この変更により 追尾レイテンシが増加する可能性があります。updateOne()
メソッドとreplaceOne()
メソッドに並べ替えオプションを追加します。 この変更により、ReplaceOneModel
インスタンスとUpdateOneModel
インスタンスの作成時にオプションとして並べ替えを設定することもできます。 詳しくは、「 ドキュメントの修正と一括操作 」のガイドを参照してください。
複数のデータベースとコレクションに対して書き込み操作を一度に実行できるクライアント一括書き込みAPIを追加します。 この機能の詳細については、 一括操作ガイドの「 クライアント一括書込み 」セクションを参照してください。
5.2.1の新機能
5.2.1 ドライバー パッチ リリースには次の変更が含まれています。
libmongocrypt
バインディングの初期化時に Graphus で構築されたアプリケーションがjava.lang.UnsatisfiedLinkError
をスローする問題を修正します。OSG ランタイムへのデプロイ時に
mongodb-driver-core
パッケージでエラーが発生する問題を修正しました。Import-Package
org.mongodb:mongodb-driver-core
マニフェスト属性にはcom.oracle.svm.core.annotate.*
パッケージが不要になりました。
5.2 の新機能
重要
MongoDB Server 3.6 のサポートの削除
Javaドライバー v5.2 はMongoDB Server 3.6 のサポートを廃止します。 サーバーの互換性のあるバージョンの詳細については、「 互換性 」を参照してください。
5.2 ドライバー リリースには、次の変更、修正、機能が含まれています。
接続 URI 内のホスト名とクライアント オプションの間にあるフォワードスラッシュ(
/
)の文字は任意です。 ドライバーは、次の接続 URI の例を同じ方法で解析します。// Connection URI with delimiting forward-slash String uri = "mongodb://example.com/?w=majority"; // Connection URI without delimiting forward-slash String uri = "mongodb://example.com?w=majority";
クライアント側操作タイムアウト(COT)の設定を有効にします。この機能を使用すると、
MongoClient
インスタンスに単一のタイムアウトを設定して、そのクライアントで実行されるすべての操作に適用できます。詳細については、 「サーバー実行時間の制限」 のガイドを参照してください。重要
非推奨のタイムアウト オプション
次のタイムアウト オプションは非推奨です。
waitQueueTimeoutMS
socketTimeoutMS
wTimeoutMS
maxTimeMS
maxCommitTimeMS
これらのオプションの機能を置き換えるには、CSO 機能を使用します。
SearchIndexModel
インスタンスの構築時に渡すことができるSearchIndexType
クラスを追加します。 この変更により、Atlas Search または Vector Search インデックスの作成時に インデックス タイプを指定できるようになります。 詳細については、「 インデックス ガイド 」の「 Atlas Search および Vector Search インデックス 」を参照してください。SCRAM-SHA-1
とSCRAM-SHA-256
認証メカニズムを実装するアルゴリズムの実装を、構成された JCA プロバイダーに委任します。 この変更により、アプリケーションは構成された FIPS 準拠の JCA プロバイダーを使用して、より高いレベルのセキュリティを提供できるようになります。JVMドライバーのバージョン管理と一致するように mongodb-crypt 依存関係のバージョン管理を改訂します。 の将来のバージョンはドライバーと一緒にリリースされ、同じバージョン番号を共有します。このリリースのドライバーをアップグレードするときに、
mongodb-crypt
mongodb-crypt
依存関係を v..5 20にアップグレードする必要があります。詳細については、 「使用中の暗号化」ガイドを 参照してください。サポートされているすべてのプラットフォームにネイティブ暗号化を実装ことにより、パフォーマンスが向上しました。 次のリストでは、オペレーティング システムに応じて、この改善を実装するために必要なアクションについて説明します。
Windows :
mongodb-crypt
のバージョンを v 5.2.0にアップグレードします。Mac :
mongodb-crypt
のバージョンを v 5.2.0にアップグレードします。Linux :
mongodb-crypt
JARファイルにバンドルされているファイルを使用する代わりに、ファイルシステムにlibmongocrypt.so
を直接インストールします。libmongocrypt
をインストールするためのLinux手順については、サーバー マニュアルを参照してください。 パッケージマネージャーを使用してlibmongocrypt
をインストールすると、 Java Native Access(JLA)は、追加の構成なしでそれを見つけます。 あるいは、LD_LIBRARY_PATH
環境変数をlibmongocrypt
パッケージのファイルパスに設定することで検索パスを指定できます。OpenSSL バイナリの互換性がない可能性があるため、バンドルされている共有ライブラリは OpenSSL にリンクされていないため、直接インストールすることをお勧めします。
共有ライブラリのロードは JANA によって処理されます。ライブラリ検索パス順序のロードルールについては、 Nativeライブラリクラスのドキュメント を参照してください。
状況によっては
InsertOneResult.getInsertedId()
メソッドとInsertManyResult.getInsertedIds()
メソッドが誤ったドキュメント ID を返す問題を修正します。 この変更は、Java ドライバー v 5.1.4および v 4.11.4にバックポートされます。シャーディングされたクラスター操作が成功しない場合、ドライバーは他の
mongos
サーバーが使用可能な場合、操作の再試行に同じmongos
サーバーを選択しないようにします。アプリケーションがGraalVM Native イメージを使用するときに必要なアクセス可能性メタデータを追加します。このメタデータは、ドライバー ライブラリを使用するときに到達可能性メタデータを収集する必要があることを置き換えます。詳細については、 GraalVM ドキュメントの「 アクセス可能性メタデータ 」を参照してください。
この変更では、
libjnidispatch
とlibmongocrypt
のリソースエントリは追加されません。サポートされているすべてのプラットフォーム(ターゲット)のエントリを追加すると、 GraalVM ネイティブ イメージを使用してビルドされたネイティブ実行可能ファイルのサイズに大きく影響するためです。このサンプルresource-config.jsonファイルをドライバー GitHubリポジトリで表示して、アプリケーションがorg.mongodb:mongodb-crypt
ライブラリに依存している場合にこれらのエントリを明示的に指定する方法を確認します。VectorSearchOptions
API を拡張して次の特定のオプション サブタイプを導入することで、正確なベクトル検索を有効にします。ExactVectorSearchOptions
: このオプション タイプを使用して完全一致を有効にし、結果が特定のクエリ ベクトルに最も近いベクトルになるようにします。ApproximateVectorSearchOptions
: このオプション タイプを使用すると、正確な最も近いベクトルが返されない可能性がある検索を有効にできます。 このタイプをインスタンス化するときにnumCandidates
パラメータを渡して、考慮する最近傍の数を指定できます。
Atlas Vector Search 機能の使用の詳細については、「 集計ビルダ 」ガイドの「 Atlas Vector Search 」を参照してください。
5.1.3の新機能
5.1.3 ドライバー パッチ リリースには次の変更が含まれています。
Cursor
型の使用時にアサーション エラーが発生する可能性がある問題を修正しました。
5.1.2の新機能
5.1.2 ドライバー パッチ リリースには次の変更が含まれています。
MongoCollection
インスタンスのジェネリック型として基本クラスを指定している場合に、ジェネリック基本クラスを拡張する具象クラスをドライバーでエンコードおよびデコードできない問題を修正します。SOCKS 5プロキシ機能を使用するときにドメイン名を検証する方法に関連する問題を修正し、最上位ドメインが 6 文字を超えるドメイン名を使用できるようにします。
5.1.1の新機能
5.1.1 ドライバー パッチ リリースには次の変更が含まれています。
MONGODB-OIDC
認証メカニズムを使用する場合、authMechanismProperties
接続string値にカンマ文字を含めることはできません。 この動作の詳細については、エンタープライズ認証ガイドのMONGODB-OIDCセクションを参照してください。冗長なバイト配列クローンを排除し、GridFS スループットを最適化します。
GridFSDownloadStream
型とGridFSUploadStream
型では、Document
ではなくBsonDocument
型が使用されます。
5.1 の新機能
警告
このリリースの廃止
ドライバーの将来のメジャー リリースで重大な変更を避けるため、非推奨のプログラム要素に依存するアプリケーション コードをすべて置き換えます。
このセクションには、次の情報が含まれています。
5.1での非推奨
MongoDB Server v 3.6のサポートは非推奨であり、次のドライバー バージョンのリリースで削除される予定です。 MongoDB Server 配置をアップグレードする方法については、MongoDB Server マニュアルのリリースノートを参照してください。
5.1での改善
GraalVM ネイティブ イメージ テクノロジーの内部テスト。 これらのテストには、 GraalVM ネイティブ イメージ ツールを使用してネイティブ アプリケーションをビルドすることが含まれます。
MONGODB-OIDC 認証メカニズムのサポートが強化されました。 OIDC の詳細については、エンタープライズ認証メカニズムのガイドの「 MONGODB-OIDC 」セクションを参照してください。
5.1の新機能
serverMonitoringMode
接続 URI オプションを導入します。 このオプションの詳細については、接続オプションのガイドを参照してください。
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 のマニュアル ページ またはコレクションのリストを取得する を参照してください。
注意
The v 5.0.2 パッチ リリースは、SOCKS 5プロキシ機能を使用するときにドメイン名を検証する方法に関連する問題を修正し、最上位ドメインが 6 文字を超えるドメイン名を使用できるようにします。
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 は に配置された UNIX ソケットファイルを作成します。"/tmp/mongodb-27017.sock"
UnixSocketAddress
の詳細については、UnixSocketAddress APIドキュメントを参照してください。
StreamFactory インターフェースに関連する次のメソッドとタイプは非推奨となり、5 v.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 に接続する 」を参照してください。
注意
The v 4.11.3 パッチ リリースは、SOCKS 5プロキシ機能を使用するときにドメイン名を検証する方法に関連する問題を修正し、最上位ドメインが 6 文字を超えるドメイン名を使用できるようにします。
16 MB を超える 変更ストリーム イベントのフラグメントを識別するために、
ChangeStreamDocument
クラスにgetSplitEvent()
メソッドを追加しました。 16 MB を超えるイベントを処理するには、変更ストリームの集計ステージ$changeStreamSplitLargeEvent
を使用する必要があります。 詳細については、「大規模な変更ストリーム イベントの分割 」を参照してください。$vectorSearch
の集計ステージ ビルダを追加しました。 詳細については、「 Atlas Vector Search 」を参照してください。Atlas Search インデックス マネジメント ヘルパーを追加しました。 詳しくは、「 Atlas Search インデックス 」を参照してください。
Snappyおよびzstd圧縮ライブラリの依存関係バージョンを更新しました。 現在の依存関係バージョンの詳細については、「ネットワーク圧縮 」を参照してください。
接続プール イベントの期間をモニタリングするために、次のクラスに
getElapsedTime()
メソッドを追加しました。Java 21 仮想スレッドと構造化同時実行性のサポート。 仮想スレッドの不要な固定を回避し、スレッドの中断された状態を保持するようにドライバー内部がアップデートされました。後者はキャンセルに使用される構造化同時実行性において重要であるためです。
仮想スレッドの詳細については、「 VirtualThreads 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 ドライバーの互換性テーブル 」を参照してください。