互換性
MongoDB の互換性
次の互換性テーブルは、特定のバージョンの MongoDB で使用するための PyMongo の推奨バージョンを示しています。
最初の列は、ドライバーのバージョンの一覧です。
重要
MongoDB は、MongoDB Serverのサポート終了日(EOL)から 3 年間、MongoDB Server とドライバー間の互換性を確保します。MongoDB のリリースと EOL 日付の詳細については、 MongoDB ソフトウェア ライフサイクル スケジュールを参照してください。
互換性テーブルの凡例
Icon | 説明 |
---|---|
✓ | すべての機能がサポートされています。 |
⊛ | ドライバー バージョンは MongoDB バージョンで動作しますが、すべての新しい MongoDB 機能がサポートされているわけではありません。 |
マークなし | ドライバー バージョンは MongoDB バージョンではテストされていません。 |
PyMongo のバージョン | MongoDB 8.0 | MongoDB 7.0 | MongoDB 6.0 | MongoDB 5.0 | MongoDB 4.4 | MongoDB 4.2 | MongoDB 4.0 | MongoDB 3.6 |
---|---|---|---|---|---|---|---|---|
4.11 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |
4.9から4.10 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
4.4から4.8 | ⊛ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
4.2から4.3 | ⊛ | ⊛ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
3.12から4.1 | ⊛ | ⊛ | ⊛ | ✓ | ✓ | ✓ | ✓ | ✓ |
3.11 | ⊛ | ⊛ | ⊛ | ⊛ | ✓ | ✓ | ✓ | ✓ |
3.9から3.10 | ⊛ | ⊛ | ⊛ | ⊛ | ⊛ | ✓ | ✓ | ✓ |
3.7から3.8 | ⊛ | ⊛ | ⊛ | ⊛ | ⊛ | ⊛ | ✓ | ✓ |
言語互換性
PyMongo は CPython と PyPy の両方をサポートしています。
Python のバージョンがサポート終了(EOL)とマークされると、PyMongo の次のマイナー リリースはそのバージョンのサポートを削除します。 ドライバーは、EOL Python バージョンに対して次の継続的なサポートを提供します。
CPython : EOL CPython バージョンと互換性のある最後のマイナーな PyMongo バージョンは 1 年間に重大なバグ修正を受け取ります。
PyPy : PyMongo は、EOL 日を超えた PyPy バージョンをサポートしていません。
以下の互換性テーブルは、特定のバージョンの Python で使用するための PyMongo の推奨バージョンを示しています。 最初の列は、ドライバーのバージョンの一覧です。
Python 3
PyMongo のバージョン | CPython 3.13 | CPython 3.12 | CPython 3.11 | CPython 3.10 [ 1 ] | CPython 3.9 | CPython 3.8 | CPython 3.7 | CPython 3.6 | CPython 3.5 | CPython 3.4 | PyPy3 |
---|---|---|---|---|---|---|---|---|---|---|---|
4.11 | ✓ | ✓ | ✓ | ✓ | ✓ | ||||||
4.9から4.10 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |||||
4.8 | ✓ | ✓ | ✓ | ✓ | ✓ | ||||||
4.5から4.7 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |||||
4.3から4.4 | ✓ | ✓ | ✓ | ✓ | ✓ | ||||||
4.2 | ✓ | ✓ | ✓ | ✓ | |||||||
4.1 [ 2 ] | ✓ | ✓ | ✓ | ✓ | ✓ | ||||||
4.0 | ✓ | ✓ | ✓ | ✓ | ✓ | ||||||
3.13 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ||
3.12 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |||
3.11 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ||||
3.10 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |||||
3.7から3.9 | ✓ | ✓ | ✓ | ✓ | ✓ |
[1] | Python バージョン3.10以降は、MongoDB 4.0以前のバージョンの TLS/SSL と互換性がありません。 詳細については、トラブルシューティング ガイドの TLSセクションを参照してください。 |
[2] | Pymongo 4.1 には Python 3.6.2 以降が必要です。 |
互換性テーブルの読み方の詳細については、 「 MongoDB互換性テーブル 」を参照してください。
Python 2
PyMongoバージョン 3.7 から 3.12 はPython 2.7 およびPython 2.7 と互換性のある代替インタプリタである PyPy と互換性があります。ただし、 Python 2 環境で実行中とPyMongoアプリケーションの動作が異なる場合があります。
次のセクションでは、 PyMongo .を使用する場合のPython 2 とPython 3 の動作の違いについて説明します。
バイナリ データ
Pythonのすべてのバージョンで、 PyMongo はバイト クラスのインスタンスをバイナリ データとして、サブタイプ のバイナリ0 データとしてエンコードします。これはバイナリ データのデフォルトのサブタイプです。 Python3 では、 PyMongo はこれらの値を:bytes
クラスのインスタンスにデコードします。 Python2 では、ドライバーはそれらをサブタイプ を持つ Binaryクラスのインスタンスにデコードします。違いを示すコード例については、 0拡張JSONページ を参照してください。
サブタイプ を持つJSONバイナリ値をデコードする場合、ドライバーは同じように動作します。0 Python3 では、これらの値はbytes
クラスのインスタンスにデコードされます。 Python2 では、ドライバーはこれらをサブタイプBinary
を持つ0 クラスのインスタンスにデコードします。違いを示すコード例については、 拡張JSONページ を参照してください。
選択した ObjectId
Python 2 で ObjectId
を選択し、 Python 3 で選択解除する場合は、pickle.loads()
メソッドの引数として encoding='latin-1'
を渡す必要があります。
次の例では、Python 3 を使用してPython 2 で選択された ObjectId
の選択を解除する方法を示します。
import pickle pickle.loads(b'<ObjectId byte stream>', encoding='latin-1')
Python 3アプリケーションが互換性のある直列化プロトコルを使用して ObjectId
を選択する場合、 Python 2 を使用して選択解除できます。 Python 3 で互換性のあるプロトコルを指定するには、pickle.dumps()
メソッドの protocol
パラメーターに 0、1、または 2 の値を渡します。
次の例ではPython 3 で ObjectId
を選択し、ObjectId
と結果の bytes
インスタンスを出力します。
import pickle from bson.objectid import ObjectId oid = ObjectId() oid_bytes = pickle.dumps(oid, protocol=2) print("ObjectId: {}".format(oid)) print("ObjectId bytes: {}".format(oid_bytes))
ObjectId: 67af9b1fae9260c0e97eb9eb ObjectId bytes: b'\x80\x02cbson.objectid\nObjectId\nq\x00...
次の例では、 前の例から ObjectId
のピリオドを解除し、bytes
インスタンスと ObjectId
インスタンスを出力します。
import pickle from bson.objectid import ObjectId oid_bytes = b'\x80\x02cbson.objectid\nObjectId\nq\x00...' oid = pickle.loads(oid_bytes) print("ObjectId bytes: {}".format(oid_bytes)) print("ObjectId: {}".format(oid))
ObjectId bytes: b'\x80\x02cbson.objectid\nObjectId\nq\x00)... ObjectId: 67af9b1fae9260c0e97eb9eb