Skip to main content

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 WiredTiger, Read/Write Concern, índices (Compound, Multikey, Text, TTL, 2dsphere), Aggregation Framework e Sharded Clusters.

Jump to install

Source facts

Repository
dandgabr/skills
Last source activity
September 7, 2026 at 01:33
Detected SKILL.md language
Portuguese
Stars
9
Forks
0

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

File Explorer
5 files

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
db-mongodb
description
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 WiredTiger, Read/Write Concern, índices (Compound, Multikey, Text, TTL, 2dsphere), Aggregation Framework e Sharded Clusters.
# Habilidade 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](https://www.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`). - **Multikey Index**: Criado automaticamente ao indexar campos contendo arrays. - **TTL Index**: Apaga documentos automaticamente após um tempo especificado: ```javascript 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*): ```javascript 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: ```javascript 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`). - **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](../../roles/backend-developer/SKILL.md), [lang-typescript](../../languages/lang-typescript/SKILL.md) e [lang-python](../../languages/lang-python/SKILL.md). - Para diretrizes gerais de administração de bancos de dados NoSQL e SQL, consulte [dba-database-administrator](../../roles/dba-database-administrator/SKILL.md). - Para validação de segurança e conformidade de dados (V8/V14), consulte [appsec-owasp-asvs](../../security/appsec/appsec-owasp-asvs/SKILL.md), [cis-controls](../../security/grc-compliance/cis-controls/SKILL.md) e [security-privacy](../../security/grc-compliance/security-privacy/SKILL.md).
View on GitHub