Introducao ao MongoDB - Fundamentos de Bancos de Dados NoSQL

Iniciante | 50 min leitura | 2024.12.29

O que voce vai aprender neste tutorial

✓ Configuracao do MongoDB
✓ Operacoes CRUD
✓ Operadores de query
✓ Indices
✓ Pipeline de agregacao

Step 1: Configuracao

# macOS
brew tap mongodb/brew
brew install mongodb-community
brew services start mongodb-community

# Conectar
mongosh

Step 2: Operacoes Basicas

// Selecionar banco de dados
use myapp

// Inserir documento
db.users.insertOne({
  name: "Joao Silva",
  email: "joao@example.com",
  age: 30
})

db.users.insertMany([
  { name: "Maria Santos", email: "maria@example.com", age: 25 },
  { name: "Pedro Oliveira", email: "pedro@example.com", age: 35 }
])

Step 3: Queries

// Buscar todos
db.users.find()

// Especificar condicao
db.users.find({ age: { $gte: 30 } })

// Operadores
db.users.find({
  $and: [
    { age: { $gte: 25 } },
    { age: { $lte: 35 } }
  ]
})

// Projecao
db.users.find({}, { name: 1, email: 1, _id: 0 })

// Ordenacao e limite
db.users.find().sort({ age: -1 }).limit(10)

Step 4: Atualizacao e Delecao

// Atualizar
db.users.updateOne(
  { email: "joao@example.com" },
  { $set: { age: 31 } }
)

// Atualizar multiplos
db.users.updateMany(
  { age: { $lt: 30 } },
  { $set: { status: "young" } }
)

// Deletar
db.users.deleteOne({ email: "joao@example.com" })

Step 5: Indices

// Criar indice
db.users.createIndex({ email: 1 }, { unique: true })

// Indice composto
db.users.createIndex({ age: 1, name: 1 })

// Verificar indices
db.users.getIndexes()

Step 6: Pipeline de Agregacao

db.orders.aggregate([
  { $match: { status: "completed" } },
  { $group: {
      _id: "$userId",
      totalAmount: { $sum: "$amount" },
      count: { $sum: 1 }
  }},
  { $sort: { totalAmount: -1 } },
  { $limit: 10 }
])

Step 7: Integracao com Node.js

import { MongoClient } from 'mongodb';

const client = new MongoClient('mongodb://localhost:27017');
await client.connect();

const db = client.db('myapp');
const users = db.collection('users');

const result = await users.find({ age: { $gte: 30 } }).toArray();
console.log(result);

await client.close();

Resumo

MongoDB oferece schema flexivel e trabalha com documentos em formato JSON. Analises complexas tambem sao possiveis com pipeline de agregacao.

← Voltar para a lista