Introdução
No mundo moderno do desenvolvimento de software, os bancos de dados NoSQL se tornaram parte essencial da stack tecnológica. O MongoDB, como um dos principais SGBDs orientados a documentos, oferece aos desenvolvedores ferramentas poderosas para trabalhar com dados não estruturados. O PyMongo atua como o driver oficial do Python para MongoDB, garantindo integração completa entre aplicações Python e o MongoDB.
O que é PyMongo
PyMongo é a biblioteca oficial do Python para interagir com o MongoDB. É um driver de alto desempenho que fornece acesso direto a todos os recursos do MongoDB, incluindo funcionalidades modernas como transações, change streams e coleções temporárias.
Principais recursos do PyMongo
Compatibilidade e suporte de versões
- Suporte ao MongoDB versões 3.6, 4.0, 4.2, 4.4, 5.0, 6.0 e 7.0
- Compatível com Python 3.7+
- Atualizações regulares e correções de segurança
Funcionalidades
- Suporte completo ao formato BSON (Binary JSON)
- Suporte nativo ao GridFS para armazenar arquivos grandes
- Reconexão automática em caso de falhas
- Suporte a criptografia SSL/TLS
- Monitoramento de desempenho e profiling
Vantagens arquiteturais
- Operações thread-safe
- Pool de conexões
- Descoberta automática da topologia do cluster
- Suporte a réplicas e sharding
Instalação e configuração do PyMongo
Instalação básica
pip install pymongo
Instalação com recursos adicionais
# Para trabalhar com criptografia
pip install pymongo[encryption]
# Para trabalhar com Kerberos
pip install pymongo[gssapi]
# Para operações assíncronas
pip install motor
Verificando a instalação
import pymongo
print(pymongo.version)
Conectando ao MongoDB
Formas principais de conexão
Conexão local
from pymongo import MongoClient
# Conexão simples
client = MongoClient()
# ou
client = MongoClient('localhost', 27017)
# ou
client = MongoClient('mongodb://localhost:27017/')
Conexão com autenticação
client = MongoClient('mongodb://usuario:senha@localhost:27017/')
Conexão ao MongoDB Atlas
client = MongoClient('mongodb+srv://usuario:senha@cluster.mongodb.net/')
Conexão com SSL
client = MongoClient('mongodb://localhost:27017/',
ssl=True,
ssl_cert_reqs=ssl.CERT_NONE)
Parâmetros de conexão
client = MongoClient(
host='localhost',
port=27017,
maxPoolSize=50,
minPoolSize=10,
maxIdleTimeMS=30000,
connectTimeoutMS=5000,
socketTimeoutMS=5000,
serverSelectionTimeoutMS=5000,
retryWrites=True,
retryReads=True
)
Componentes principais do PyMongo
Trabalhando com bancos de dados
# Obtendo um banco de dados
db = client['meubanco']
# ou
db = client.meubanco
# Listando todos os bancos de dados
databases = client.list_database_names()
# Excluindo um banco de dados
client.drop_database('meubanco')
# Obtendo estatísticas do banco de dados
stats = db.command('dbstats')
Trabalhando com coleções
# Obtendo uma coleção
collection = db['minhacolecao']
# ou
collection = db.minhacolecao
# Criando uma coleção com opções
db.create_collection('m