Compatibilidade
Nesta página
Compatibilidade com o MongoDB
A tabela de compatibilidade a seguir especifica a versão recomendada ou versões do PyMongo para usar com uma versão específica do MongoDB.
A primeira coluna lista a versão do driver.
Importante
O MongoDB garante a compatibilidade entre o MongoDB Server e os drivers por três anos após a data de fim da vida útil (EOL) da versão do servidor. Para saber mais sobre a versão do MongoDB e as datas de EOL, consulte Cronograma do ciclo de vida do software MongoDB.
Legenda da tabela de compatibilidade
Icon | Explicação |
---|---|
✓ | Todas as funcionalidades são suportadas. |
⊛ | A versão do driver funcionará com a versão do MongoDB , mas nem todos os novos recursos do MongoDB são suportados. |
✗ | A versão do driver não funcionará com a versão MongoDB . Tentar se conectar à versão MongoDB resultará em erros. |
Sem marca | A versão do driver não é testada com a versão do MongoDB . |
Versão do 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 a 4.10 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
4.4 a 4.8 | ⊛ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
4.2 a 4.3 | ⊛ | ⊛ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
3.12 a 4.1 | ⊛ | ⊛ | ⊛ | ✓ | ✓ | ✓ | ✓ | ✓ |
3.11 | ⊛ | ⊛ | ⊛ | ⊛ | ✓ | ✓ | ✓ | ✓ |
3.9 a 3.10 | ⊛ | ⊛ | ⊛ | ⊛ | ⊛ | ✓ | ✓ | ✓ |
3.7 a 3.8 | ⊛ | ⊛ | ⊛ | ⊛ | ⊛ | ⊛ | ✓ | ✓ |
Compatibilidade de linguagem
O PyMongo suporta CPython e PyPy.
Quando uma versão do Python é marcada como fim da vida útil (EOL), a próxima versão menor do PyMongo elimina o suporte para essa versão. O driver oferece o seguinte suporte contínuo para versões do EOL Python:
CPython: a última versão menor do PyMongo compatível com a versão EOL CPython recebe correções críticas de bugs por um ano.
PyPy: o PyMongo não suporta versões do PyPy após a data de EOL.
A tabela de compatibilidade a seguir especifica a versão recomendada do PyMongo para uso com uma versão específica do Python. A primeira coluna lista a versão do driver.
Python 3
As seguintes tabelas de compatibilidade mostram a compatibilidade do PyMongo com diferentes versões do CPython e PyPy.
Para obter mais informações sobre como ler as tabelas de compatibilidade, consulte Tabelas de compatibilidade do MongoDB.
CPython
PyPy
Versão do PyMongo | PyPy3.10 | PyPy3.9 | PyPy3.8 | PyPy3.7 | PyPy3.6 | PyPy3.5 |
---|---|---|---|---|---|---|
4.11 a 4.12 | ✓ | |||||
4.8 a 4.10 | ✓ | ✓ | ||||
4.5 a 4.7 | ✓ | ✓ | ✓ | |||
4.2 a 4.4 | ✓ | ✓ | ✓ | ✓ | ||
4.1 [2] | ✓ | ✓ | ✓ | ✓ | ✓ | |
4.0 | ✓ | ✓ | ✓ | ✓ | ✓ | |
3.12 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
3.11 | ✓ | ✓ | ✓ | ✓ | ✓ | |
3.10 | ✓ | ✓ | ✓ | ✓ | ||
3.7 a 3.9 | ✓ | ✓ | ✓ |
[1] | Versões do Python 3.10 e posteriores não são compatíveis com TLS/SSL para versões do MongoDB 4.0 e anteriores. Para obter mais informações, consulte a seção TLS do guia Solução de problemas. |
[2] | (1, 2) O PyMongo 4.1 exige Python 3.6.2 ou posterior. |
Python 2
As versões de 3.7 a 3.12 do PyMongo são compatíveis com Python 2.7 e PyPy2.7. No entanto, em alguns casos, os aplicativos PyMongo se comportam de forma diferente quando executados em um ambiente Python 2.
As seções seguintes descrevem as diferenças no comportamento entre Python 2 e Python 3 ao utilizar o PyMongo.
Dados binários
Em todas as versões do Python, o PyMongo codifica instâncias da classe bytes como dados binários com subtipo 0, o subtipo padrão para dados binários. No Python 3, o PyMongo decodifica esses valores para instâncias da classe bytes
. No Python 2, o driver os decodifica para instâncias da classe Binary com subtipo 0.
Os seguintes exemplos de código mostram como o PyMongo decodifica instâncias da classe bytes
. Selecione a aba Python 2 ou Python 3 para visualizar o código correspondente.
from pymongo import MongoClient client = MongoClient() client.test.test.insert_one({'binary': b'this is a byte string'}) doc = client.test.test.find_one() print(doc)
{u'_id': ObjectId('67afb78298f604a28f0247b4'), u'binary': Binary('this is a byte string', 0)}
from pymongo import MongoClient client = MongoClient() client.test.test.insert_one({'binary': b'this is a byte string'}) doc = client.test.test.find_one() print(doc)
{'_id': ObjectId('67afb78298f604a28f0247b4'), 'binary': b'this is a byte string'}
O driver se comporta da mesma maneira ao decodificar valores binários JSON com subtipo 0. No Python 3, ele decodifica esses valores para instâncias da classe bytes
. No Python 2, o driver os decodifica para instâncias da classe Binary
com subtipo 0. Para exemplos de código que mostram as diferenças, consulte a página JSON estendido.
ObjectIds em pedaços
Se você selecionou um ObjectId
no Python 2 e deseja retirá-lo do Python 3, deverá passar encoding='latin-1'
como um argumento para o método pickle.loads()
.
O exemplo a seguir mostra como usar o Python 3 para desmarcar um ObjectId
que foi selecionado no Python 2:
import pickle pickle.loads(b'<ObjectId byte stream>', encoding='latin-1')
Se um aplicação Python 3 usar um protocolo de serialização compatível para desmarcar um ObjectId
, você poderá usar o Python 2 para desmarcar. Para especificar um protocolo compatível no Python 3, passe um valor de 0, 1 ou 2 para o parâmetro protocol
do método pickle.dumps()
.
O exemplo a seguir seleciona um ObjectId
no Python 3 e, em seguida, imprime o ObjectId
e a instância bytes
resultante:
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...
O exemplo a seguir retira o ObjectId
do exemplo anterior e então imprime as instâncias bytes
e 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
Compatibilidade do Motor
A tabela a seguir mostra as versões equivalentes do Motor e do PyMongo.
Versão do Motor | Versão do PyMongo |
---|---|
3.7 | 4.10 |
3.6 | 4.9 |
3.3 | 4.4 |
3.1 | 4.2 |
3.0 | 4.0 |