Olá, dev! Seja bem-vindo ao primeiro dia da sua jornada rumo à certificação MongoDB Associate Developer. Durante os próximos 15 dias, abordaremos de forma exaustiva e prática todo o conteúdo exigido pelo exame.
1. Paradigma NoSQL vs. Relacional
O MongoDB é um banco de dados NoSQL orientado a documentos. Em bancos relacionais tradicionais (RDBMS), os dados são estruturados em tabelas estritas, linhas e colunas, onde relacionamentos são normalizados via chaves estrangeiras e junções (JOINs).
No MongoDB:
- Tabelas equivalem a Coleções (Collections).
- Linhas (Rows) equivalem a Documentos (Documents).
- Colunas (Columns) equivalem a Campos (Fields).
- Esquema Flexível (Dynamic Schema): Documentos na mesma coleção não precisam possuir exatamente a mesma estrutura de campos.
2. JSON vs. BSON (Binary JSON)
Embora você interaja com o MongoDB escrevendo consultas em sintaxe JSON (JavaScript Object Notation), o banco armazena e processa dados em BSON (Binary JSON).
Exemplo de Documento BSON Representado em JSON:
{
"_id": ObjectId("64f8a12b9c3e2f1a8b4d5e6f"),
"name": "Ada Lovelace",
"email": "dev@exemplo.com",
"age": NumberInt(28),
"balance": NumberDecimal("1250.75"),
"isActive": true,
"createdAt": ISODate("2026-08-03T16:00:00Z"),
"skills": ["MongoDB", "Node.js", "Python"],
"address": {
"city": "Uberaba",
"state": "MG",
"zip": "38000-000"
}
}
3. Anatomia Aprofundada do ObjectId
O campo _id identifica univocamente cada documento em uma coleção. Se você não fornecer um _id na criação, o MongoDB gera automaticamente um ObjectId de 12 bytes (24 caracteres hexadecimais).
Byte Composition (12 bytes total):
[ 0 - 3 ] 4 Bytes: Unix Timestamp (segundos desde a Época Unix)
[ 4 - 8 ] 5 Bytes: Valor Aleatório Único por Processo/Máquina
[ 9 - 11] 3 Bytes: Contador Incrimental Randômico
Propriedades Fundamentais para a Prova:
- É gerado preferencialmente no lado do driver da aplicação, reduzindo a necessidade de 'round-trips' com o servidor.
- Os primeiros 4 bytes contêm o timestamp de criação. É possível extrair a data de criação diretamente do
ObjectIdusandoObjectId.getTimestamp(). - Como começa com um timestamp, é monotonicamente crescente (proporciona ordenação natural por tempo de criação).
4. Limites Físicos e Regras de Estrutura
- Tamanho Máximo do Documento BSON:
16 Megabytes. (Garante performance de transferência de rede e uso de memória RAM). - GridFS: Se precisar armazenar arquivos superiores a 16MB (ex: vídeos, imagens HD), utiliza-se o GridFS, que divide o arquivo em chunks de 255KB.
- Profundidade Máxima de Aninhamento: Até
100 níveisde objetos ou arrays embutidos.
5. Prática mongosh (MongoDB Shell)
// Conectar e selecionar banco
use dev_cert_db
// Inserir um documento
db.developers.insertOne({
name: "Ada Lovelace",
certifications: ["AWS Cloud Practitioner"],
targetCertification: "MongoDB Associate Developer",
startDate: new Date()
})
// Extrair timestamp do ObjectId gerado
const doc = db.developers.findOne({ name: "Ada Lovelace" })
print("Data de criação:", doc._id.getTimestamp())
6. Questões Estilo Certificação (Fixação)
Questão 1: O que acontece se uma aplicação inserir um documento sem especificar o campo _id?
Resposta: O driver/MongoDB adicionará automaticamente um campo _id com um novo ObjectId gerado único de 12 bytes.
Questão 2: Qual o tamanho máximo permitido para um único documento BSON no MongoDB?
Resposta: 16 MB.