Dia 01 de 15

Introdução & Modelo de Documentos

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:

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:

4. Limites Físicos e Regras de Estrutura

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.