MongoEngine: trabalhando com MongoDB em Python

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Guia completo de MongoEngine: trabalhando com MongoDB em Python

Introdução ao MongoEngine

Com o crescimento dos bancos de dados NoSQL, cada vez mais desenvolvedores Python escolhem o MongoDB para armazenar dados. Isso se deve à sua flexibilidade, escalabilidade e estrutura orientada a documentos. Para simplificar a interação com o MongoDB, foi criada a biblioteca MongoEngine — um mapeador objeto-documento (ODM) que permite trabalhar com documentos do MongoDB como se fossem objetos Python.

O MongoEngine oferece uma interface poderosa e ao mesmo tempo simples para definir modelos, executar consultas e validar dados, sem a necessidade de escrever código complexo e específico do MongoDB. Esta biblioteca é uma das soluções mais populares para trabalhar com MongoDB no ecossistema Python.

Fundamentos do MongoDB e o papel do MongoEngine

NoSQL e armazenamento orientado a documentos

MongoDB é um banco de dados orientado a documentos, onde os dados são armazenados no formato BSON (JSON binário). Isso torna o MongoDB flexível, especialmente ao lidar com estruturas de dados aninhadas complexas. Ao contrário dos bancos de dados relacionais, o MongoDB não exige um esquema rígido e permite alterar dinamicamente a estrutura dos documentos.

Mapeamento Objeto-Documento (ODM)

O ODM (Object Document Mapper) funciona de forma análoga ao ORM, mas em vez de tabelas e linhas, ele opera com documentos e coleções. O MongoEngine implementa abstrações ODM para o MongoDB, fornecendo uma API limpa e pythonica. Isso permite que os desenvolvedores trabalhem com o banco de dados usando objetos Python familiares, sem se aprofundar nos detalhes da sintaxe do MongoDB.

Vantagens do MongoEngine

O MongoEngine oferece várias vantagens importantes:

  • Sintaxe declarativa: Os modelos são descritos como classes Python
  • Validação automática: Verificação de dados integrada no nível dos campos
  • Suporte a relacionamentos: Possibilidade de criar relações entre coleções
  • Indexação: Definição simples de índices para otimizar consultas
  • Integração com frameworks web: Fácil integração com Flask, Django e outros

Instalação e configuração do MongoEngine

Instalação da biblioteca

pip install mongoengine

Para trabalhar com MongoDB, você também precisará instalar o servidor MongoDB. Você pode usar uma instalação local ou serviços em nuvem, como o MongoDB Atlas.

Conexão ao banco de dados

Conexão básica com o MongoDB local:

from mongoengine import connect

connect(db='biblioteca', host='localhost', port=27017)

Conexão usando string de conexão:

connect(host='mongodb://localhost:27017/biblioteca')

Conexão ao MongoDB Atlas ou outro serviço em nuvem:

connect(host='mongodb+srv://usuario:senha@cluster.mongodb.net/database?retryWrites=true&w=majority')

Configuração de conexão com autenticação

connect(
    db='biblioteca',
    host='localhost',
    port=27017,
    username='admin',
    password='senha',
    authentication_source='admin'
)

Criação de modelos no MongoEngine

Fundamentos da definição de modelos

O MongoEngine usa classes Python para descrever a estrutura dos documentos. Cada modelo herda da classe Document:

from mongoengine import Document, StringField, DateField, IntField

class Autor(Document):
    nome = StringField(required=True, max_length=100)
    data_nascimento = DateField()
    quantidade_livros = IntField(default=0)
    
    def __str__(self):
        return self.nome

Metadados do modelo

A classe Meta permite configurar vários parâ

Recommendations