🌐 Detecting your location…
📢 Advertisement — Configure AdSense in Appearance → Customize → AdSense Settings

Guia completo do MongoDB 2026: CRUD, agregação e padrões de produção

⏱️4 min read  ·  693 words

MongoDB é o banco de dados NoSQL mais popular do mundo. Em 2026, o MongoDB 8.0 traz grandes melhorias de desempenho e melhores ferramentas para desenvolvedores. Este guia completo cobre tudo, desde o seu primeiro documento até a arquitetura MongoDB de nível de produção.

Por que MongoDB?

  • Esquema flexível— sem migrações para modelos de dados em evolução
  • Documentos semelhantes a JSON— ajuste natural para APIs JavaScript/Python
  • Escala horizontal— fragmentação integrada para dados massivos
  • Linguagem de consulta rica— pipelines de agregação rivalizam com SQL para análise
  • Pesquisa vetorial do Atlas— pesquisa semântica para aplicações de IA

Instalação

# macOS
brew tap mongodb/brew && brew install mongodb-community@8.0
brew services start mongodb-community@8.0

# Ubuntu 24.04
curl -fsSL https://www.mongodb.org/static/pgp/server-8.0.asc | sudo gpg -o /usr/share/keyrings/mongodb-server-8.0.gpg --dearmor
echo "deb [ signed-by=/usr/share/keyrings/mongodb-server-8.0.gpg ] https://repo.mongodb.org/apt/ubuntu noble/mongodb-org/8.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-8.0.list
sudo apt update && sudo apt install -y mongodb-org
sudo systemctl start mongod

# Connect to shell
mongosh

Principais operações CRUD

// Switch database
use techpulse_db

// INSERT
db.users.insertOne({
  name: "Alice",
  email: "alice@example.com",
  skills: ["Python", "React"],
  createdAt: new Date()
})

db.posts.insertMany([
  { title: "React Guide", views: 1500, tags: ["react", "js"] },
  { title: "Python Guide", views: 2300, tags: ["python", "backend"] }
])

// FIND
db.users.find({ skills: "Python" })     // match array element
db.posts.find(
  { views: { $gt: 1000 } },            // filter
  { title: 1, views: 1, _id: 0 }       // projection
)

// UPDATE
db.users.updateOne(
  { email: "alice@example.com" },
  { $set: { role: "senior" }, $push: { skills: "Go" } }
)
db.posts.updateMany(
  { tags: "python" },
  { $inc: { views: 100 } }
)

// DELETE
db.users.deleteOne({ email: "alice@example.com" })

Índices de Desempenho

// Check slow queries
db.posts.find({ title: "React Guide" }).explain("executionStats")

// Create indexes
db.users.createIndex({ email: 1 }, { unique: true })
db.posts.createIndex({ tags: 1, views: -1 })       // compound
db.articles.createIndex({ title: "text" })           // full-text search
db.events.createIndex({ createdAt: 1 },
  { expireAfterSeconds: 2592000 })                    // TTL: 30 days

// Always create indexes before going to production
db.users.getIndexes()

Pipeline de agregação

// Sales report: revenue by category
db.orders.aggregate([
  { $match: { status: "completed", createdAt: { $gte: new Date("2026-01-01") } } },
  { $unwind: "$items" },
  { $group: {
    _id: "$items.category",
    totalRevenue: { $sum: { $multiply: ["$items.price", "$items.qty"] } },
    count: { $sum: 1 }
  }},
  { $sort: { totalRevenue: -1 } },
  { $limit: 10 },
  { $project: { category: "$_id", revenue: { $round: ["$totalRevenue", 2] }, _id: 0 }}
])

Python com PyMongo e Motor (Async)

from pymongo import MongoClient, ASCENDING
from datetime import datetime

# Sync
client = MongoClient("mongodb://localhost:27017/")
db = client.techpulse_db
users = db.users

result = users.insert_one({"name": "Alice", "createdAt": datetime.utcnow()})
alice = users.find_one({"name": "Alice"}, {"_id": 0})
users.update_one({"name": "Alice"}, {"$set": {"active": True}})

# Async with Motor (for FastAPI)
import motor.motor_asyncio

async_client = motor.motor_asyncio.AsyncIOMotorClient("mongodb://localhost:27017")
async_db = async_client.techpulse_db

async def create_user(data: dict) -> str:
    result = await async_db.users.insert_one(data)
    return str(result.inserted_id)

async def list_users(page: int = 1) -> list:
    cursor = async_db.users.find().skip((page-1)*20).limit(20)
    return await cursor.to_list(length=20)

Modelagem de dados: incorporação versus referência

// Embed when reading together (1-to-few)
{
  _id: ObjectId("..."),
  title: "MongoDB Guide",
  author: { name: "Alice", email: "alice@blog.com" },  // embedded
  tags: ["mongodb", "nosql"]                            // embedded
}

// Reference when shared/large (1-to-many)
// posts: { authorId: ObjectId("user1") }
// Look up with $lookup
db.posts.aggregate([
  { $lookup: {
    from: "users",
    localField: "authorId",
    foreignField: "_id",
    as: "author"
  }},
  { $unwind: "$author" }
])

Melhores práticas de produção

  • Use conjuntos de réplicas— mínimo de 3 nós para HA
  • Habilitar autenticação— nunca execute o MongoDB sem autenticação
  • Validar documentos– use esquema JSON ou Pydantic
  • Monitore consultas lentas— habilitar profiler, usar monitoramento Atlas
  • Limitar o tamanho do documento– fique bem abaixo do limite de 16 MB BSON
  • Atlas para produção— serviço gerenciado com backups, escalonamento, monitoramento

# Atlas connection
MONGO_URI = "mongodb+srv://user:pass@cluster.mongodb.net/mydb?retryWrites=true&w=majority"
client = MongoClient(MONGO_URI)

MongoDB 8.0 em 2026 é o melhor banco de dados de documentos para aplicações flexíveis e rápidas. Comece de forma simples, crie índices adequados e use o pipeline de agregação para análises. Combine com o Atlas Vector Search para pesquisa semântica baseada em IA em seus aplicativos.

✍️ Leave a Comment

Your email address will not be published. Required fields are marked *

🌐 Read in:🇬🇧 English🇩🇪 Deutsch🇧🇷 Português🇸🇦 العربية🇮🇳 हिन्दी🇧🇩 বাংলা