リリースノート
このページでは、ドライバー リリースにおける重要な変更について説明します。
これは変更の網羅的なリストではなく、通常バグ修正を列挙することはありません。 の リリースGithub ページを参照してください ドライバーの各バージョンの変更のより包括的なリストと Jira のリリースのページ ドライバーとそのテスト スイートの内部的な変更を含む、変更の完全なリスト。
2.21
このリリースには、次の新機能が含まれています。
クライアント側操作タイムアウト(CSO)機能のサポートを追加します。これにより、タイムアウトに関連するオプションのほとんどが単一の
timeout_ms
オプションの下で統合されます。MongoDB Server バージョン8.0のサポートを追加します。
新しい
trim_factor
パラメータを含む、Queryable Encryption を使用した範囲 v 2クエリのサポートを追加します。 Queryable EncryptionQueryable Encryptionの詳細については、MongoDB Server マニュアルの「 」を参照してください。
2.20
このリリースには、次の新機能が含まれています。
Ruby 2.5および2.6のサポートは終了しました。 Ruby 2.7および JRuby 9.2のサポートは非推奨になっており、次のマイナー ドライバー バージョンではサポートが終了します。 JRuby 9.4のサポートが追加されました。
新しいリリースの Ruby-BSON バージョン5.0のサポート。
Connection strings no longer require a slash between the hosts and the options. たとえば、「 MongoDB ://example.com?w=1」と「 MongoDB ://example.com/?w=1」は両方とも現在有効な接続文字列です。
クライアント環境のコンテナ ランタイムとオーケストレーション メタデータが分析目的でサーバーに送信されるようになりました。
ホストが CosmosDB (Azure)または DocumentDB (Amazon)のインスタンスであることが検出されたときに、ログに警告メッセージが書き込まれるようになりました。
シャーディングされたトポロジーで読み取りまたは書込み操作の再試行が試行されると、可能な場合は別の mongos インスタンスで再試行されます。
2.19
Ruby ドライバーのこのリリースは MongoDB バージョン 7.0 をサポートしています。 Ruby ドライバーが Ruby 3.2 をサポートするようになりました。 Ruby 2.5 および 2.6 は非推奨になりました。
このリリースには、次の新機能が含まれています。
ドライバーは、接続プールによって同時に確立される接続の数を制限するようになりました。 デフォルトでは、制限は 2 です。制限は、
Mongo::Client
コンストラクターの:max_connecting
オプションを使用して構成できます。 デフォルトはほとんどのアプリケーションで十分です。 ただし、アプリケーションで多数のスレッドを使用している場合は、制限を増やす必要がある場合があります。クライアント側の暗号化に使用する場合に、一時的な認証情報を使用して Amazon の認証情報を自動的に取得し、認証するためのサポートを追加しました。Amazon Web ServicesAmazon Web ServicesKMS
GCPキー管理がクライアント側の暗号化に使用される場合の、 GCP認証情報の自動取得のサポートを追加しました。
Azure Key Vault がクライアント側の暗号化に使用される場合の自動 KMS 認証情報用の Azure VM 割り当てマネージド ID のサポートを追加しました。
Queryable Encryptionのサポートが拡張されています。
Queryable Encryption 範囲インデックスのサポートを追加しました。
mongocryptd
の代わりにcrypt_sharedライブラリを使用できるようになりましたサービス アカウント、特に EKS のAmazon Web Services IAM ロール のサポートを追加しました。
Amazon Web Servicesの認証情報が可能な場合にキャッシュされるようになりました。
Ruby ドライバー経由でAtlas Search インデックスの作成と管理のサポートを追加しました。
2.18
このリリースの Ruby ドライバーは、MongoDB バージョン 5.2 および 6.0 をサポートしています。
このリリースには、次の新機能が含まれています。
Queryable Encryptionのサポートを追加しました。
クライアント側の暗号化のマスター キー ストレージとして使用するAzure Key Vault 、 Google Cloud Platform Key Management、KMIP 準拠のキー管理システムのサポートを追加しました。
スキーマ マップ全体を オブジェクトとしてではなく、スキーマ マップ ファイルへのパスを指定できるようになりました。
ドライバーに、互換性のない変更とバグ修正のために機能フラグメカニズムが実装されました。 2.18 の変更は、以下で説明するように、ビュー フィルターとオプションを
aggregate
に渡し、update
とreplace
メソッドの正しい使用の検証を行います。アップデート操作と置換操作のパラメータを検証する
validate_update_replace
機能フラグを追加しました。 このフラグがオンになっていると、無効な更新または置換ドキュメントに対してエラーが発生します。表示オプションを
aggregate
、count
、count_documents
、distinct
、およびestimated_document_count
メソッドに正しく反映できるようにするbroken_view_options
機能フラグを追加しました。 このフラグをオンに切り替えると、それらのメソッドで表示オプションは無視されます。CRUD メソッド、データベース、コレクション、インデックス マネジメントのメソッドで新しいオプション
:comment
をサポートするようになりました。 このオプションを指定すると、データベースプロファイラ、currentOp、およびログから操作を追跡するのに役立つ任意のコメントを指定できます。estimated_document_count
メソッドでは、ビューに対する操作をサポートするために、$collStats
集計パイプライン ステージではなくcount
サーバーコマンドが使用されるようになりました。 Stable API を使用するアプリケーションは、サーバー バージョン 5.0.8(MongoDB 5.0 を使用している場合)または 5.3.2 にアップグレードする必要があります。 (MongoDB 5.1/5.2/5.3 を使用する場合)以降の では、API strict が有効になっている場合にcount
コマンドを使用するか、サーバー バージョン 5.0.0-5.0.7 と 5.1 でMongo::Client
インスタンスを構築するときにapi_strict: true
を設定しないでください。 0 ~ 5.3.1DBRef クラスは
bson-ruby
に移動されました。 下位互換性のため、BSON::DBRef
はMongo::DBRef
のエイリアスです。BSON::DBRef
クラスはBSON::Document
から派生しており、Object
から派生したレガシーMongo::DBRef
とは異なります。BSON::DBRef
はコンストラクターに渡されたすべての属性を保持します。これは、$ref
、$id
、$db
のみを許可したMongo::DBRef
とは異なります。 MongoDB サーバーでは、必要に応じて、BSON::DBRef
$ref
、$id
、$db
を最初に配置する必要がある場合、フィールドの順序も変更します。BulkWrite::Result
クラスにacknowledged?
属性が追加されました。一括書き込みに空の操作配列を指定すると、エラーが発生するようになりました。
BSON 直列化のパフォーマンスが向上しました。
ActiveJob ミドルウェアがクエリ キャッシュに追加されました。
:authorized_collections
オプションは、コレクションを一覧表示するときに認識されます。:wildcard_projection
オプションが許可されたインデックス仕様に追加されました。ドライバーが接続を確立する mongos ルーターの数を制限するために、
:srv_max_hosts
/srvMaxHosts
Ruby と URI のオプションを追加しました。カスタム SRV サービス名が
:srv_service_name
Ruby オプションとsrvServiceName
URI オプションでサポートされるようになりました。最大接続プール サイズとして 0 が指定されている場合、制限なしを意味するように解釈されるようになりました。
デフォルトの最大接続プール サイズが 5 から 20 に引き上げられました。
このリリースでは、JRuby 9.3 のサポートが追加されています。
2.17
Ruby ドライバーのこのリリースは MongoDB バージョン 5.1 をサポートしています。 また、必要な Ruby バージョンの最小が 2.5 に引き上げられ、3.6 より古いバージョンの MongoDB のサポートが廃止されます。
このリリースには、次の新機能が含まれています。
セカンダリ などのトランザクション外の読み取りコマンドに、新しい readConcern レベル 「スナップショット」(非推測的) を追加しました。
セカンダリで実行される $merge と $out をサポートします。
集計コマンドと CRUD コマンドで「let」オプションをサポートするようになりました。
次のバグが修正されました。
アドレス解決が失敗すると、プッシュ モニター スレッドは終了できます。
次の重大じゃない変更が行わされました。
mapReduce コマンドは非推奨になりました。
プッシュ モニターで密なループが発生するのを避ける
2.16
このリリースでは、次の新機能が追加されています。
ロード バランサーのサポート。
次のマイナーな改善が行われています。
GridFS ファイルの取得では、インデックスがすでに存在する場合、インデックス作成特権が不要になったため、読み取り権限のみを持つユーザーで使用できるようになりました。
このリリースの Ruby ドライバーにより、必要な Ruby バージョンの最小が 2.4 に引き上げられ、3.6 未満の MongoDB サーバー バージョンのサポートが廃止されます。
2.15
このリリースでは、次の新機能が追加されています。
Ruby 3.0 のサポート。
Zstandard および Snappyワイヤプロトコル圧縮のサポート。
クエリ キャッシュ ミドルウェアは Mongoid からドライバーに移動され、Mongoid を使用しないアプリケーションで使用できるようになりました。
時系列オプションを使用してコレクションを作成できるようになりました。
ロード バランサーを使用しない場合のMongoDB Atlas Serverlessの試験用サポート。
次の小規模な改善が行われています。
OperationFailure
例外メッセージに、サーバーから提供された場合は、サーバー エラー コード名が含まれるようになりました。 エラー コード名に合わせてメッセージの配置が変更されました。TLS が使用される場合、一般的な SSL メッセージは
SocketError
メッセージから削除されました。 MongoDB への TLS 接続は標準になり、Atlas では TLS が必要になりましたが、サーバーで TLS が有効になっていないためよりも、証明書の検証に失敗して接続が失敗する可能性が高くなります。アプリケーションが TLS 接続に使用されるTLS コンテキストを変更できるようにするためのフックが追加されました。たとえば、暗号を除外するためです。
ハートビートが成功したサーバーと失敗したサーバーを監視するイベントが、それぞれのハートビートが開始されたイベントにリンクされるようになり、使いやすさが向上しました。
skip
サーバーコマンドが受け入れないため、estimated_document_count
を呼び出すときは とlimit
オプションは使用できなくなりました。ドライバーは、機密コマンドに応答している場合、コマンド モニタリングの応答ペイロードを省略するようになりました。
ドライバーがネットワーク ソケットを閉じると、ソケット タイムアウトが強制されるようになりました。
estimated_document_count
コレクション メソッドでは、5.0 以降のサーバーで count コマンドと 集計パイプライン ステージの代わりに$collStats
集計パイプライン ステージが使用されるようになりました。ハンドシェイクでドライバーによってサーバーに送信されるプラットフォームのメタデータに、接続を確立するための目的が含まれるようになり、管理者はモニタリング接続をアプリケーション接続と区別できるようになりました。
ドライバーはタイムアウトに単調なクロックを使用するようになりました。
ドライバーは、サーバー応答の
writeErrors
フィールドのエラーに基づいて、不明なサーバーをマークしなくなりました。mongocryptd
のサーバー選択タイムアウトが 10 秒に延長されました。
2.14
このリリースでは、次の新機能が追加されています。
Atlas Data Lake に対するクエリがサポートされるようになりました。
クエリ キャッシュは Mongoid からドライバーに移動されました。 Mongoid は、ドライバー 2.14 以降、ドライバーのクエリ キャッシュを使用します。 移行の一環として、クエリ キャッシュに関するいくつかの問題が修正され、その機能は 集計パイプライン クエリ をカバーし、任意のサイズの結果セットをサポートするように拡張されました。
explain の冗長性を指定できるようになりました。
混合大文字と小文字の読み込み設定(read preference)タグ名がサポートされるようになりました。
TLS が有効になっている場合、ドライバーはデフォルトでOCSP エンドポイントの検証を実行します。 Ruby の
openssl
拡張機能のサポートがないため、OCSP ステープリングはまだ実装されていません。
次の小規模な改善が行われています。
Client
オブジェクトのデフォルトのロガー レベルが情報になりました(デバッグから増加)。 これにより、ドライバーが生成するログ出力の量がデフォルトで減ります。データベース書込みメソッドとコレクション書込みメソッドは、個々の操作の書込み保証の指定をサポートしています。
Client#summary
メソッドに、各サーバーの監視状態が表示されるようになりました。ハッシュ以外のオブジェクトを挿入しようとした場合(これは許可されていない)、ドライバーはより優れた診断を提供するようになりました。
SRV URI の DNS クエリは、設定されたソケット タイムアウトの対象となるようになりました。
Client
オブジェクトが再接続されると、セッション プールはクリアされるようになりました。
このリリース時点で、Ruby バージョン 2.3 および 2.4 のサポートは非推奨となっています。
2.13
このリリースでは、MongoDB 4.4 で追加された機能を使用するために必要なクライアント側の機能が実装されています。 具体的には、次の新しいドライバー機能が追加されました。
配置トポロジーを検出したり、直接接続を強制したりするための一貫したドライバー間メカニズムを提供するための
directConnection
URI オプションのサポートバージョン 4.4 以降のサーバーで SCRAM 認証が使用される場合、ドライバーはより少ないネットワーク回数で認証を完了します。
ドライバーは 4.4 以降のサーバー用に追加のモニタリング接続を作成し、サーバーが状態が変化したときにドライバーに通知できるようにします。 これにより、フェイルオーバー イベント中にドライバーが新しいプライマリを検出する時間が短縮されます。
Client
コンストラクターに ブロックを渡すことができます。その場合、クライアント オブジェクトはブロックに降格し、ブロックが終了すると自動的に閉じられます。start_session
は ブロックを指定できます。その場合、セッション オブジェクトはブロックに与えられ、ブロックが終了すると自動的に終了します。個々の CRUD 操作に対して書込み (write) オプションを指定できるようになりました。
操作を検索するために
:allow_disk_use
オプションを追加しました。:authorized_databases
オプションがlist_databases
メソッドに追加されました。list_collections
メソッドがすべてのオプションを通過するようになりました。インデックスの作成時に非表示に設定する機能
インデックスの作成時にコミットクォーラムを指定する機能。
:wrapping_libraries
クライアント オプションは、トラブルシューティング/統計集計目的でサーバーにバージョンを報告するようにドライバーをラップする Mongoid のようなライブラリで使用されます。
次の小規模な改善が行われています。
count_documents
引数なしで呼び出せるようになりました。デフォルトの TCP キープアライブ時間が短縮され、Microsoft Azure で切断された接続が正しく検出されるようになりました。
CursorNotFound
は、再開可能な変更ストリーム エラーになりました。バックグラウンド スレッドによって処理される例外のバックトレース行数を設定できるようになりました。
2.12
このリリースでは、次の新機能が追加されています。
list_collections
メソッドが:filter
オプションを受け入れるようになりました。
次の小規模な改善が行われています。
認証の例外に、トラブルシューティングを支援するためにサーバー情報が含まれるようになりました。
2.11
このリリースでは、次の新機能が追加されています。
最小接続プール サイズが指定されている場合、各サーバーのプールはバックグラウンド スレッドを作成し、指定された最小プール サイズまで接続を迅速に確立します。
ドライバーが SRV URI を使用して配置に接続し、配置がシャーディングされたクラスターである場合、ドライバーは SRV DNS レコードをポーリングして、新しい mongos サーバーと削除された mongos サーバーを自動的に検出し、それに応じて既知のサーバーのセットを調整します。
次の小規模な改善が行われています。
ドライバーでは、MongoDB URI のユーザー名とパスワードでエンコードされていない下位区切り文字が使用できるようになりました。
ユーザー管理ヘルパーが書込み保証(write concern)オプションを受け入れるようになりました。
ドライバーが提供するコマンド監視ロガーが、各コマンドで使用される接続 ID をログに記録するようになりました。
レガシー読み取り再試行が使用される場合は、最新の再試行が再試行したサーバー エラーと同じセットで再試行します。
distinct(nil)
呼び出しは MongoDB 4.4 以降のサーバーによって拒否されるため、禁止されています。
Ruby ドライバーのこのリリースにより、必要な Ruby バージョンの最小が 2.3 に増加し、JRuby でサポートされる最小バージョンが 9.2 に増加します。
2.10
このリリースでは、MongoDB 4.2 で追加された機能を使用するために必要なクライアント側の機能が実装されています。 具体的には、次の新しいドライバー機能が追加されました。
シャーディングされたトランザクションのサポート
アプリケーションは
commit_transaction
メソッドで:max_time_ms
オプションを設定できます。データベース レベルの集計のサポート。
$merge
集計パイプライン ステージのサポート更新操作で、集計パイプラインを配列として受け入れるようになりました
TLS 再生成が可能な場合、無効になりました。
変更ストリームは、サーバーが提供するバッチ処理後の再開トークンを処理するようになりました。
次の小規模な改善が行われています。
以前に
:write
オプションを受け入れていたメソッドを含む、すべてのメソッドが書込み保証 (write concern) の:write_concern
オプションを受け入れるようになりました。URI のクエリstring MongoDB
&
が で開始できるようになりました。
このリリースでは、2.3 未満の Ruby バージョンのサポートが廃止されます。
2.9
このリリースでは、次の新機能が追加されています。
CMAP 仕様に準拠した、監視が改善された接続プール コードの書き換え
クロスドライバー再試行可能な読み取り仕様に準拠した最新の再試行可能な読み取りの実装で、デフォルトで有効になっています。
モダンな再試行可能な書込みがデフォルトで有効になりました。
レガシー再試行可能な書込みは、ほとんどの場合、無効にできます。
ドライバーが、TLS 接続のクライアント証明書として提供される証明書チェーンをサポートするようになりました。
Client
の作成時に複数の CA 証明書を指定する機能。URI オプションを介して秘密キーと証明書を渡す機能。
次の小規模な改善が行われています。
$changeStream
集計パイプライン ステージでstartAfter
オプションをサポートするようになりましたロギングを改善するためにサーバーに送信される BSON ドキュメントのフィールド順序が変更されました。
エスケープされていないスラッシュを含む証明書パスが MongoDB URI で指定できるようになりました。
このリリースでは、2.3 未満の Ruby バージョンのサポートが廃止されます。