db-mongodb
Fornece padrões de administração e engenharia para MongoDB baseados na documentação oficial em português (mongodb.com/pt-br/docs). Cobre modelagem de documentos (Embedding vs Referencing), motor Wired
SKILL.mdskills/databases/db-mongodb/SKILL.md
GitHubHabilidade de IA: Engenharia e Administração de MongoDB (db-mongodb)
Esta skill orienta a inteligência artificial a atuar como especialista no banco de dados Orientado a Documentos MongoDB, fundamentada na documentação oficial (mongodb.com/pt-br/docs). Cobre estratégias avançadas de modelagem de esquemas, motor de armazenamento WiredTiger, garantias de consistência (Write/Read Concern), otimização com índices, Aggregation Framework, Replica Sets e Sharded Clusters.
🧭 Modelagem de Dados Orientada a Documentos
No MongoDB, a modelagem é orientada pelos padrões de acesso da aplicação (consultas de leitura e gravação juntas), em vez da normalização estrita:
1. Incorporação (Embedding) vs. Referência (Referencing)
- Embutir (Desnormalização - Preferencial):
- Utilize quando houver relacionamentos 1:1 ou 1:N (onde N é limitado e pequeno, ex: endereços de um cliente).
- Garante atomacidade de gravação e leituras de alto desempenho em uma única operação de E/S.
- Referenciar (Normalização):
- Utilize quando houver relacionamentos 1:N (onde N é ilimitado ou muito grande, ex: logs de auditoria) ou N:M.
- Evita o limite máximo de tamanho de documento do BSON (16 MB).
2. Padrões de Projeto de Esquema (Schema Design Patterns)
- Subset Pattern: Guarda apenas os N dados mais recentes ou acessados no documento principal e o restante em uma coleção separada.
- Bucket Pattern: Agrupa dados de séries temporais (time-series) ou métricas de IoT por janelas de tempo (ex: 1 hora) para reduzir número de documentos e otimizar índices.
- Outlier Pattern: Trata documentos excepcionalmente grandes separadamente sem penalizar a maioria dos documentos padrão.
🛠️ Indexação Avançada e Otimização de Consultas
1. Tipos de Índices no MongoDB
- Composto (Compound Index): Siga a regra ESR (Equality, Sort, Range):
- 1º: Campos de igualdade exata (
$eq). - 2º: Campos usados na ordenação (
sort()). - 3º: Campos de intervalo (
$gte,$lte,$in).
- 1º: Campos de igualdade exata (
- Multikey Index: Criado automaticamente ao indexar campos contendo arrays.
- TTL Index: Apaga documentos automaticamente após um tempo especificado:
db.sessions.createIndex({ "createdAt": 1 }, { expireAfterSeconds: 3600 }); - Geoespacial (
2dsphere): Para consultas de proximidade ($near,$geoWithin).
2. Análise com explain()
Execute sempre a explicação com modo executionStats para diagnosticar varredura de coleção (COLLSCAN):
db.orders.explain("executionStats").find({
status: "COMPLETED",
createdAt: { $gte: ISODate("2026-01-01") }
});
🔍 Aggregation Framework Nativo
Utilize pipelines de agregação para transformações complexas de dados de forma nativa e paralela:
db.orders.aggregate([
// 1. Filtragem inicial usando índice
{ $match: { status: "COMPLETED", orderDate: { $gte: ISODate("2026-01-01") } } },
// 2. Junção com a coleção de clientes
{
$lookup: {
from: "customers",
localField: "customerId",
foreignField: "_id",
as: "customer_details"
}
},
// 3. Desfazer o array gerado pelo lookup
{ $unwind: "$customer_details" },
// 4. Agrupamento e cálculo de métricas
{
$group: {
_id: "$customer_details.segment",
totalRevenue: { $sum: "$totalAmount" },
averageOrderValue: { $avg: "$totalAmount" },
totalOrders: { $count: {} }
}
},
// 5. Ordenação do resultado
{ $sort: { totalRevenue: -1 } }
]);
⚙️ Concorrência, Consistência e Alta Disponibilidade
1. Consistência e Garantias de Durabilidade
- Write Concern: Controla a confirmação da escrita pelo cluster:
w: "majority": Garante que a escrita foi persistida no journal da maioria dos nós do Replica Set (previne rollback no failover).
- Read Concern:
rc: "majority": Retorna apenas dados confirmados pela maioria dos nós.rc: "linearizable": Garante leitura estritamente em tempo real (evita leituras obsoletas).
2. Arquitetura de Produção
- Replica Sets: Mínimo de 3 nós votantes (1 Primário e 2 Secundários) para automatizar a eleição e o failover sem indisponibilidade.
- Sharded Cluster: Para escalabilidade horizontal em múltiplos terabytes de dados. Escolha a Shard Key com atenção para evitar jumbo chunks ou pontos quentes (hotspots) de gravação.
🔒 Hardening e Conformidade de Segurança (OWASP ASVS & CIS MongoDB Benchmark)
- Autenticação Obrigatória e TLS:
- Habilite autenticação de controle de acesso (
security.authorization: enabled). - Exija conexões cifradas TLS 1.3/1.2 (
net.tls.mode: requireTLS).
- Habilite autenticação de controle de acesso (
- Autenticação Interna do Cluster: Utilize certificados X.509 ou chave de arquivo (keyFile) para comunicação entre nós de Replica Set ou Shards.
- Criptografia no Nível de Campo (CSFLE - Client-Side Field Level Encryption): Cifre dados sensíveis (PII, números de cartão) no cliente usando chaves KMS antes da transmissão para o banco.
- Validação de Esquema (
$jsonSchema): Aplique Schema Validation na coleção para evitar injeção de operador NoSQL ($where,$gt: "").
🔗 Integração com Outras Skills
- Para integrar MongoDB em APIs Node.js/TypeScript ou Python, consulte backend-developer, lang-typescript e lang-python.
- Para diretrizes gerais de administração de bancos de dados NoSQL e SQL, consulte dba-database-administrator.
- Para validação de segurança e conformidade de dados (V8/V14), consulte appsec-owasp-asvs, cis-controls e security-privacy.