Pular para o conteúdo
Tecnologia

MongoDB é NoSQL document-oriented. Flexível, escalável, JSON nativo. Ideal para dados não-estruturados e crescimento rápido.

Conceitos Principais

Documents

JSON (BSON). Schemaless. Nested documents e arrays. { _id: ObjectId, name: "John", tags: ["dev"] }.

Collections

Grupo de documents. Equivalente a table SQL. Sem schema enforced. Flexível.

Aggregation Pipeline

Processa dados. $match, $group, $sort, $project. Pipeline de transformações.

Indexes

Single field, compound, text, geospatial. Acelera queries. createIndex().

Passo a Passo

  1. Instale MongoDB: Mac: brew install mongodb-community. Docker: docker run -p 27017:27017 mongo:7. mongosh para CLI.
  2. CRUD Básico: use myapp; db.users.insertOne({name: "John", email: "..."}); db.users.find({name: "John"}); db.users.updateOne({name: "John"}, {$set: {email: "..."}}); db.users.deleteOne({name: "John"});
  3. Node.js Driver: npm install mongodb. const { MongoClient } = require("mongodb"); const client = new MongoClient(uri); const db = client.db("myapp"); const users = db.collection("users");
  4. Aggregation: db.orders.aggregate([{ $match: { status: "completed" }}, { $group: { _id: "$userId", total: { $sum: "$amount" }}}, { $sort: { total: -1 }}]);
  5. Indexes: db.users.createIndex({ email: 1 }, { unique: true }); db.posts.createIndex({ tags: 1 }). Explique query: db.users.find({email: "..."}).explain();

Boas Praticas

Recomendacoes

• Embed relacionamentos 1-to-few

• Reference relacionamentos 1-to-many

• Índices em queries frequentes

• Denormalize para performance

• Limit e skip para pagination

• Connection pooling

Erros Comuns

Evite estes erros

• Normalizar como SQL (anti-pattern)

• Não criar índices

• Schemas muito nested (>100 levels)

• Não usar aggregation (client-side processing)

• Expor MongoDB direto ao client

Checklist

  • MongoDB instalado
  • Collections criadas
  • CRUD funcionando
  • Driver Node.js configurado
  • Índices criados
  • Aggregation testada