次の新機能をご覧ください。
4.19の新機能
PyMongo v 4.19リリースには、次の新機能が含まれています。
Python v3.15のサポートを追加します。
Python v3.14以降の
concurrent.futures.InterpreterPoolExecutorクラス内を含め、サブインタープリターで同期および非同期クライアントを実行するためのサポートを追加しました。サブインタープリターでは、インタープリターが破棄されると、ドライバーは同期クライアントのモニター・スレッドを停止して結合します。クライアント側のフィールドレベル暗号化およびQueryable EncryptionのためのKMS(Key Management Service)リクエストをHTTP proxy経由でルーティングするサポートを追加しました。これらのリクエストをルーティングするには、
kms_connect_callback、AutoEncryptionOpts、ClientEncryption、およびAsyncClientEncryptionクラスでHTTPProxyKMSConnectオプションを使用するか、AsyncHTTPProxyKMSConnectまたはヘルパーを渡します。srv_host_validatorキーワード引数をMongoClientクラスとAsyncMongoClientクラスに追加します。これは、SRV をホストするものを単一のサフィックスとして表現できない配置に対して、srvAllowedHostsSuffixstring オプションの代わりに使用できます。コールバックは、返されたホストごとに 1 回実行され、ブール値を返す必要があります。このオプションはsrvAllowedHostsSuffixとは排他関係にあります。srvAllowedHostsSuffixを、localhost、test、internalなどのプライベートまたは特別な用途のために予約された単一のラベルにすることができます。gevent環境下で、接続をプールに戻す際にgreenletが強制終了されると、同期クライアントが永久にデッドロックする可能性があるバグを修正しました。
ハンドシェイクのメタデータのバグを修正しました。
MongoClient.append_metadata()とAsyncMongoClient.append_metadata()は、重複を検出した際にDriverInfoオブジェクト全体を比較するようになり、driver.nameフィールドとdriver.versionフィールドは一致するインデックス位置を使用するようになりました。SRVポーリングのバグを修正しました。返されたホストのいずれかが無効な場合に、ドライバーがトポロジーを更新しないという問題がありました。
C拡張機能のBSONデコーダーが、要素データがドキュメントの終端と重なっているドキュメントを、
InvalidBSONを発生させる代わりに受け入れてしまうバグを修正しました。decode_all()がInvalidBSONを発生させる代わりに、部分的なドキュメントで終わるバッファを受け入れていたバグを修正しました。これで C 拡張機能と一致するようになりました。
このリリースの詳細については、 Githubの v4.19 リリースノート を参照してください。
4.18.3の新機能
このリリースの詳細については、 Githubの v4.18.3 リリースノート を参照してください。
4.18.2の新機能
このリリースの詳細については、 Githubの v4.18.2 リリースノート を参照してください。
4.18.1の新機能
このリリースの詳細については、 Githubの v4.18.1 リリースノート を参照してください。
4.18の新機能
PyMongo v 4.18リリースには、次の新機能が含まれています。
MongoDB Server v 9.0のサポートを追加します。
srvAllowedHostsSuffix接続オプションを追加します。これは、URI オプションとして、またはMongoClientまたはAsyncMongoClientキーワード引数として設定できます。mongodb+srv://接続文字列を使用して接続する場合、このオプションは、SRV レコードによって返されるホストがシードホスト名と同じ親ドメインを持つ必要があるというデフォルトの要件をオーバーライドします。サフィックスは、Public Suffix List に記載されているパブリックサフィックスにすることはできません。MongoDB Server v9.0 以降に対して、Queryable Encryption のプレフィックス、サフィックス、およびサブストリング クエリの一般提供のサポートが追加されました。これらのクエリには、
libmongocryptv1.20.0 以降が必要です。このリリースでは、以下の関連する変更が実施されます。Algorithm.STRING値とStringOptsクラスを追加します。これらはAlgorithm.TEXTPREVIEWおよびTextOptsを置き換えます。置き換えられた値は非推奨です。QueryType.PREFIX、QueryType.SUFFIX、QueryType.SUBSTRINGのクエリタイプを追加します。対応するPREFIXPREVIEW、SUFFIXPREVIEW、SUBSTRINGPREVIEWクエリタイプは、v9.0 以前の MongoDB Server バージョンでは引き続き試験的な使用が可能です。ClientEncryption.encrypt()メソッドとAsyncClientEncryption.encrypt()メソッドにstring_optsパラメータを追加し、text_optsパラメータを非推奨とします。pymongocryptリリースでは、これら 2 つのパラメータ名のいずれか 1 つのみを受け入れます。ドライバーは、pymongocryptv1.19 以降のでtext_optsを渡す場合、pymongocryptv1のでstring_optsを渡す場合にConfigurationErrorを発生させます。16v1.18 まで、または両方の名前を一度に入力します。
同じサーバーへの接続間でTLSセッションを再利用することにより、新しい接続ごとにおけるフルハンドシェイクを回避し、TLS接続パフォーマンスを向上させます。同期クライアントは、すべての Python バージョンでセッション再開に対応しています。また、非同期クライアントは Python v3.11 以降でそれに対応しています。
再試行によってサーバーの状態が悪化することが予想されない場合に限り、オーバーロードエラーを再試行することで、Intelligent ワークロード マネジメント のパフォーマンスを向上させます。
mongosv7.1 以降に対するエキゾース カーソル (CursorType.EXHAUST) のサポートを追加します。大容量のドキュメントを
bson.raw_bson.RawBSONDocumentオブジェクトへデコードする際のパフォーマンスとメモリ使用量を向上させます。また、C 拡張機能が利用可能な場合のRawBSONDocumentオブジェクトをレイジーデコードする際のパフォーマンスを向上させます。機密性が高い可能性のある認証メカニズムのプロパティ (たとえば AWS セッション トークン) を、
MongoClientおよびAsyncMongoClientオブジェクトの string 表現から削除します。OP_COMPRESSEDメッセージの圧縮解後のサイズをmax_message_sizeに対して検証することで、悪意を持って作成された圧縮されたサーバーの応答によるメモリ消耗を防止します。BSON ドキュメントの配列をデコードする際に、C 拡張機能で発生する可能性のある範囲外読み取りを修正します。埋め込みドキュメントが長さを宣言し、それが配列に残っているバイト数を超えている場合、ドライバーは
bson.errors.InvalidBSONエラーを発生させるようになりました。bson.json_util.loads()メソッドを修正し、tおよびi以外のフィールドを含む$timestamp値を拒否するようにしました。Windows 上で、および PyOpenSSL を使用する場合の macOS 上で、
SSL_CERT_FILEおよびSSL_CERT_DIR環境変数が、オペレーティング システムまたはcertifi証明書ストアを置き換えるのではなく、統合されていましたバグを修正します。PyPy サポートの非推奨化。サポートは今後のリリースで削除されます。
このリリースの詳細については、 Githubの v4.18 リリースノート を参照してください。
4.17 の新機能
PyMongo v 4.17リリースには、次の新機能が含まれています。
ClientSession.bind()とAsyncClientSession.bind()コンテキスト マネージャーを追加します。これにより、セッションを各操作に渡すのではなく、ブロック内のすべてのデータベース操作にセッションをバインドできます。bind()メソッドの詳細については、トランザクションガイドを参照してください。Ingress 接続レート制限機能のサポートを追加します。過負荷サーバーに接続した際の動作を改善するには、
max_adaptive_retriesとenable_overload_retargetingオプションを使用します。これらのオプションの詳細については、 CRUD操作の構成ガイドの 「オーバーロード再試行オプション」 を参照してください。次の
bson.son.SONメソッドを非推奨にします。has_key(): 代わりにin演算子を使用します。iterkeys(): 代わりにdict.keys()を使用してください。itervalues(): 代わりにdict.values()を使用してください。
4.16 の新機能
PyMongo v 4.16リリースには、次の新機能が含まれています。
bson.errors.InvalidDocumentエラーメッセージから無効なドキュメントを排除することで、機密データのリークのリスクを軽減します。ドライバーの
dnspython要件を v2.6.1 以降に更新します。次の方法で Zstandard サポートを更新します。
Python v3.14 以降を使用する場合、 PyMongo は標準ライブラリを使用します。
以前のPythonバージョンを使用している場合、 PyMongo は
backports.zstdパッケージを使用します。
次のメソッドの戻り値の型を更新して、
Noneを含めます。これらのメソッドは、CollectionまたはAsyncCollectionのインスタンスで呼び出すことができます。find_one_and_update()find_one_and_replace()find_one_and_delete()
1 次元の NumPy 配列を
BinaryVector型に変換する ためのサポートを追加します。別のインスタンスがすでにロードされている場合は、
ClientEncryptionクラスがcrypt_sharedライブラリを自動的に読み込まないようにします。これにより、次のエラーが解決されます。MongoCryptError: An existing crypt_shared library is loaded by the application
4.15 の新機能
PyMongo v 4.15リリースには、次の新機能が含まれています。
Queryable Encryption のプレフィックス、サフィックス、サブストリング クエリの実験的なサポートを追加します。これらの機能には
pymongocrypt1.16 以降が必要です。QE の詳細については、「 使用中の暗号化 」を参照してください。注意
試験用機能
Queryable Encryption のプレフィックス、サフィックス、サブストリングのクエリは不安定であり、一般提供(GA)されるまでセキュリティは保証されません。実験的なワークロードでのみ使用してください。
bson.codec_options.TypeRegistryクラスを使用して、 BSONDecimal128値をPythondecimal.Decimal値にエンコードとデコードのサポートを追加します。次の例は、bson.decimal128.DecimalEncoderクラスを使用して、Decimal128値をdecimal.Decimal値にエンコードする方法を示しています。opts = CodecOptions(type_registry=TypeRegistry([DecimalEncoder()]))bson.encode({"d": decimal.Decimal('1.0')}, codec_options=opts)Windows ARM64 ウィザードのサポートを追加します。
4.14 の新機能
PyMongo v 4.14リリースには、次の新機能が含まれています。
フリー スレッディング機能を含む、 Python 3.14 の予備サポートを追加します。ドライバーはPython 3.14 の次の機能をまだサポートしていません。
サブインタープリター(
concurrent.interpreters)暗号化を使用したフリースレッド
mod_wsgi
Python 3.13 によるフリー スレッディングの実験的なサポートを廃止します。
次のプロパティを
bson.codec_options.TypeRegistryクラスに追加します。.codecs:TypeRegistryオブジェクトのタイプ固有のコーデックへのアクセスを提供します.fallback_encoder:TypeRegistryオブジェクトのフォールバック エンコードへのアクセスを提供します
append_metadata()メソッドをMongoClientクラスとAsyncMongoClientクラスに追加します。このメソッドを使用して、クライアントのメタデータをオンデマンドでサーバーに送信できます。プライマリ読み取り参照を使用する場合のサーバー選択パフォーマンスが向上します。
4.13 の新機能
PyMongo v 4.13リリースには、次の新機能が含まれています。
PyMongo Async API は通常利用可能です。PyMongoドライバーまたはMotorライブラリからPyMongo Async APIに移行する方法については、 「PyMongo Async への移行」ガイドを参照してください。
w="majority"を使用している場合にWriteConcern()が評価できないバグを修正しました。
このリリースで解決された問題の完全なリストを確認するには、Jira リリースノート を参照してください。
4.12 の新機能
PyMongo v 4.12リリースには、次の新機能が含まれています。
AutoEncryptionOptsへのkey_expiration_ms引数を使用して、DEKキャッシュの有効期間を構成するためのサポートを追加します。CSFLE で
$lookupと MongoDB Server 8.1 以降で QE のサポートを追加します。gridfs.asynchronous.grid_file.AsyncGridFSBucket.rename_by_name()メソッドとgridfs.grid_file.GridFSBucket.rename_by_name()メソッドを追加します。これらのメソッドを使用すると、複数のリビジョニングされたファイルの名前をよりパフォーマンス的に変更できます。gridfs.asynchronous.grid_file.AsyncGridFSBucket.delete_by_name()メソッドとgridfs.grid_file.GridFSBucket.delete_by_name()メソッドを追加します。これらのメソッドを使用すると、複数のリビジョニングされたファイルをよりパフォーマンス的に削除できます。AsyncMongoClientオブジェクトは作成時にmongodb+srv://接続文字列の DNS 解決を実行しなくなりました。asyncioループのブロックを回避するために、 PyMongo はクライアントが最初に接続されるまで解決を延期するようになりました。pymongo.asynchronous.collection.AsyncCollection.distinct()メソッドとpymongo.collection.Collection.distinct()メソッドにインデックスヒントのサポートを追加します。PrimaryPreferred、Secondary、SecondaryPreferred、Nearestの読み込み設定(read preference)のhedgeパラメータを廃止します。PyMongo v5.0 ではhedgeのサポートが削除されます。PyMongo Async ドライバーから PyOpenSSL サポートを削除します。
3 未満の有効な SRV ホスト名を許可します。
4.11 の新機能
PyMongo v 4.11リリースには、次の新機能が含まれています。
Python v3.13+を実行中際にフリースレッド CPython のサポートを追加します。無料スレッドの詳細については、Pythonドキュメントを参照してください。
使用中の暗号化には
pymongocryptv1.12 以降が必要です。MongoClient.address()メソッドとAsyncMongoClient.address()メソッドは、接続されていないクライアントで呼び出されると正しくブロックされます。IndexModelクラスとSearchIndexModelクラスの__repr__サポートを追加します。次のメソッドに
sortパラメータを追加します。Collection.update_one()Collection.replace_one()operations.UpdateOne()operations.UpdateMany()
MongoClient.bulkWrite()メソッドとAsyncMongoClient.bulk_write()メソッドでは、orderedまたはverboseResultsオプションがTrueに設定されている場合に未確認の書込みで使用すると、エラーがスローされます。レガシーMongoDB拡張JSON日時表現の使用時に、
DatetimeMSが'{"$date": X}'ではなく'{"$date": "X"}'として誤ってエンコードされるバグを修正します。bson.json_util.loads()メソッドが無効な$date値を解析するときにValueErrorではなくIndexErrorを発生させるバグを修正します。
4.10 の新機能
PyMongo v 4.10リリースには、次の新機能が含まれています。
新しいバイナリBSONサブタイプ(9 )の一時的なサポートを追加します。これは メソッドと メソッドを使用して ベクトル
bson.binary.Binary.from_vector()bson.binary.Binary.as_vector()の効率的なストレージと取得に使用できます。BSONサブタイプ 9 のサポートはbeta段階であり、一般提供リリースより前に変更される可能性があります。アプリケーションでC拡張機能が使用されている場合、
driver.nameクライアントメタデータフィールドに"c"を追加します。AsyncMongoClientがデッドロックを発生させる可能性があるバグを修正します。
4.9 の新機能
PyMongo v 4.9リリースには、次の新機能が含まれています。
MongoDB Server 8.0およびPython 3.13のサポートを追加します。
Queryable Encryption範囲クエリのサポートを追加します。 この機能を使用するには、アプリをMongoDB Server 8.0以降に接続する必要があります。 Queryable Encryptionの詳細については、 MongoDB Serverマニュアルの「 Queryable Encryption 」を参照してください。
Motorの代わりに新しい実験的な非同期APIを追加します。 このAPIはbetaであり、一般利用可能なリリースより前に変更される可能性があります。
4.8 の新機能
PyMongo v 4.8リリースには、次の新機能が含まれています。
リリース プロセスに安全なソフトウェア開発ライフ サイクル(SSDC)のオートメーションを実装しました。 Githubリリースには、PyPI でリリースされたディストリビューション ファイルに対応するソフトウェア アイテムの請求書(MBOM)と署名ファイルが含まれます。
bson.binary.Binaryタイプのオブジェクトでは、バイナリ サブタイプがSENSITIVE_SUBTYPE(8)の場合、repr()メソッドは編集されます。変更ストリームで、 フィールドと フィールドの両方が再試行に追加でき、再試行が失敗するバグを修正しました。
startAtOperationTimeresumeTokenWindows では、インポート時間を改善するために、
os.nameのハンドシェイク メタデータをWindowsに変更しました。特にドライバーが多くの操作を同時に実行している場合の
MongoClient操作のパフォーマンスが向上しました。pyopensslモジュールのインポートがAttributeErrorとともに失敗する場合に、stdlibsslモジュールへのフォールバックを追加しました。
4.7 の新機能
PyMongo v 4.7リリースには、次の新機能が含まれています。
Hello.connection_id、CommandStartedEvent.server_connection_id、CommandSucceededEvent.server_connection_id、CommandFailedEvent.server_connection_id を追加しました。プロパティ。クライアント側フィールド レベル暗号化(CSFLE)用の KMS(KMS)プロバイダーの名前サフィックスのサポートを追加しました。 この機能には
pymongocryptv1.9+ とlibmongocryptv1.9+ が必要です。詳細については、AutoEncryptionOptsクラスのAPIドキュメントを参照してください。BSON ドキュメントを JSON にエンコードする際のパフォーマンスが向上しました。
ClientEncryption.encrypt()メソッドとClientEncryption.encrypt_expression()メソッドで、key_id引数をUUIDオブジェクトとして渡すことができるようになりました。Code値を含むRawBSONDocumentオブジェクトをインスタンス化しても、エラーが発生しなくなりました。Python 3.12のバグを修正しました Python インタープリタがシャットダウンして
MongoClientスレッドが起動するときに、エラー メッセージRuntimeError: can't create new thread at interpreter shutdownがstderrに書き込まれる可能性があります。Int64インスタンスがorjsonライブラリによって必ずしもエンコードされないバグを修正しました。次の例のようなコードが正しく実行されるようになりました。
>>> import orjson>>> from bson import json_util>>> orjson.dumps({'a': Int64(1)}, default=json_util.default, option=orjson.OPT_PASSTHROUGH_SUBCLASS)