MongoDB: Resumo Prático

O modelo de documentos do MongoDB elimina a maior parte da cerimônia de schema que vem com bancos relacionais, mas introduz suas próprias regras de modelagem de dados, indexação e consultas. Se você vem do SQL e tenta usar no instinto, vai acabar com consultas lentas por razões que não são nada óbvias.

TL;DR: Uma referência prática de MongoDB cobrindo instalação, conexão, modelagem de dados e consultas, incluindo o aggregation pipeline.
Stack: MongoDB, Docker, mongo shell
Nível: Iniciante
Tempo de leitura: ~7 min

Instalando e conectando no Ubuntu

A forma mais rápida de colocar o MongoDB rodando localmente é via Docker. Sem configuração de repositório, sobe em segundos.

# Iniciar nova instância
docker run --name local_mongo -d -p 27017:27017 -p 28017:28017   -e MONGO_INITDB_ROOT_USERNAME=admin   -e MONGO_INITDB_ROOT_PASSWORD=123123 mongo

# String de conexão (funciona no MongoDB Compass)
"mongodb://admin:123123@localhost:27017/?authSource=admin"

Exemplo de coleção complexa

[
  {
    "itemId": "1234567890",
    "itemName": "Laptop XYZ",
    "category": "Eletrônicos",
    "price": 999.99,
    "inventory": [
      { "warehouse": "A", "quantity": 50 },
      { "warehouse": "B", "quantity": 25 }
    ],
    "reviews": [
      { "userId": "user123", "rating": 5, "comment": "Excelente produto!" },
      { "userId": "user456", "rating": 4, "comment": "Bom, mas a bateria poderia durar mais." }
    ],
    "sales": [
      { "date": "2023-10-26", "quantity": 10, "price": 999.99 },
      { "date": "2023-10-27", "quantity": 5, "price": 949.99 }
    ]
  }
]

Exemplos de consultas

// Consulta simples por campo no 1o nivel
db.products.find({ category: "Eletrônicos" })

// Combinando condições
db.products.find({
  $and: [
    { "inventory.warehouse": "A" },
    { "inventory.quantity": { $gt: 50 } }
  ]
})

// Correspondência parcial de texto
db.products.find({ itemName: { $regex: "Smart" } })

// Agregando e somando
db.products.aggregate([
  { $unwind: "$inventory" },
  {
    $group: {
      _id: "$itemId",
      totalQuantity: { $sum: "$inventory.quantity" }
    }
  }
])

O que você construiu

Uma referência funcional de MongoDB: como subir uma instância local, inserir documentos aninhados e consultá-los com filtros, regex e o aggregation pipeline. Os exemplos de agregação cobrem as duas operações que mais confundem quem vem do SQL: $unwind para arrays e $group para resumos.

Próximos passos

  • Adicione índices nos campos que você mais consulta. Sem eles, o MongoDB vai varrer todos os documentos de bom humor, e em escala isso dói. Comece com db.collection.createIndex({ field: 1 }) e use explain() para confirmar que os índices estão sendo usados.
  • Explore a API de change streams se precisar reagir a mudanças no banco em tempo real sem polling.
  • Conecte pelo Python usando pymongo ou motor (async) e replique essas consultas programaticamente.

Dúvidas ou feedback? Me encontre no LinkedIn ou GitHub.

Deixe um comentário