Skip to content

Instantly share code, notes, and snippets.

@luizpicolo
Last active April 9, 2025 19:01
Show Gist options
  • Save luizpicolo/eb9061e86a85e9fb9107d2979388f5f0 to your computer and use it in GitHub Desktop.
Save luizpicolo/eb9061e86a85e9fb9107d2979388f5f0 to your computer and use it in GitHub Desktop.

MongoDB: Comandos Essenciais e Avançados

O MongoDB é um banco de dados NoSQL que utiliza documentos em formato BSON (Binary JSON) para armazenar dados. Aqui estão os principais comandos e operações organizados por categoria:

Os comandos do MongoDB são baseados em JavaScript (JS). Quando você interage com o MongoDB através do shell (mongo shell), você está utilizando uma interface que aceita comandos escritos em uma sintaxe semelhante à do JavaScript. Isso se aplica a operações como inserção, consulta, atualização e exclusão de documentos.

1. Conexão e Configuração Inicial

Conexão ao servidor

mongo                          # Conecta ao servidor local
mongo --host <host> --port <porta>  # Conecta a servidor remoto
mongo "mongodb://user:senha@host:porta/banco"  # Conexão com autenticação

Informações do sistema

db.version()                   # Exibe a versão do MongoDB
db.getMongo()                  # Mostra detalhes da conexão
db.serverStatus()              # Status do servidor

2. Gerenciamento de Bancos de Dados

Criar/Selecionar banco

Caso o banco não exista, ele será criado. Contudo, ele apenas será persistido quando a primeira coleção foi inserida.

use nome_banco                 # Seleciona ou cria um banco de dados

Listar e remover bancos

show dbs                       # Lista todos os bancos de dados
db.dropDatabase()              # Remove o banco atual
db.stats()                     # Estatísticas do banco atual

3. Gerenciamento de Coleções

No MongoDB, uma coleção (ou "collection" em inglês) é um agrupamento de documentos que são armazenados em um banco de dados. As coleções são análogas a tabelas em bancos de dados relacionais, mas com algumas diferenças importantes: sem esquema e flexível

Criar e listar coleções

db.createCollection("clientes") # Cria coleção com opções específicas
db.createCollection("logs", { capped: true, size: 1000000 }) // Máxima em tamanho, no caso 1000000 bytes
show collections               # Lista todas as coleções
db.getCollectionNames()        # Lista nomes das coleções

Informações e remoção

db.clientes.stats()            # Estatísticas da coleção
db.clientes.totalSize()        # Tamanho total da coleção
db.clientes.drop()             # Remove a coleção

4. Operações CRUD

Inserção

db.clientes.insertOne({
  nome: "João Silva",
  idade: 30,
  status: "ativo"
})

db.clientes.insertMany([
  { nome: "Maria", idade: 25 },
  { nome: "Carlos", idade: 35 }
])

Consulta

db.clientes.find()             # Todos os documentos
db.clientes.findOne()          # Primeiro documento
db.clientes.find().limit(5)    # Limita resultados
db.clientes.find().skip(10)    # Pula documentos
db.clientes.find().sort({nome: 1}) # Ordenação (1=asc, -1=desc)
db.produtos.find({_id: ObjectId('67eddf04c98ce2b329069e5f')})

Atualização

db.clientes.updateOne(
  { nome: "João" },
  { $set: { idade: 31 } } // O operador $set no MongoDB é usado para atualizar o valor de um campo em um documento. Se o campo já existe, ele atualiza; se não existe, ele cria o campo com o valor informado.


)

db.clientes.updateMany(
  { status: "ativo" },
  { $inc: { pontos: 10 } } // O operador $inc no MongoDB é usado para incrementar (ou decrementar) valores numéricos em um documento. Ele é muito útil quando você quer somar, subtrair ou ajustar contadores, pontuações, quantidades,
)

db.clientes.replaceOne(
  { nome: "Maria" },
  { nome: "Maria Silva", idade: 26 }
)

Exclusão

db.clientes.deleteOne({ nome: "João" })
db.clientes.deleteMany({ status: "inativo" })

5. Operadores Avançados

Operadores de consulta

// Comparação
db.clientes.find({ idade: { $gt: 25, $lte: 40 } })

// Lógicos
db.clientes.find({ $or: [{ status: "ativo" }, { idade: { $lt: 30 } }] })

// Arrays
db.produtos.find({ tags: { $in: ["eletrônico", "promoção"] } })
db.produtos.find({ tags: { $all: ["novo", "importado"] } })

// Existência
db.clientes.find({ telefone: { $exists: true } })

// Regex
db.clientes.find({ nome: { $regex: /^J/i } })

Operadores Úteis

Categoria Operador Exemplo Descrição
Comparação $eq { ano: { $eq: 2021 } } Igual a
$gt { paginas: { $gt: 200 } } Maior que
$lt { paginas: { $lt: 300 } } Menor que
$in { generos: { $in: ["tecnologia", "ficção"] } } Pertence a um dos valores do array
Lógicos $and { $and: [ { ano: 2021 }, { disponivel: true } ] } Todos os critérios devem ser verdadeiros
$or { $or: [ { ano: 2021 }, { disponivel: true } ] } Pelo menos um critério deve ser verdadeiro
Arrays/Subdocumentos $elemMatch { autores: { $elemMatch: { idade: { $gt: 40 } } } } Encontra documentos que tenham um subdocumento correspondente

Operadores de atualização

{ $set: { campo: valor } }      # Define valor
{ $unset: { campo: "" } }       # Remove campo
{ $inc: { campo: valor } }      # Incrementa valor
{ $push: { array: valor } }     # Adiciona a array
{ $addToSet: { array: valor } } # Adiciona se não existir
{ $pull: { array: valor } }     # Remove de array

6. Agregação e Indexação

Pipeline de agregação

db.vendas.aggregate([
  { $match: { data: { $gt: new Date("2023-01-01") } } },
  { $group: { _id: "$cliente", total: { $sum: "$valor" } } },
  { $sort: { total: -1 } },
  { $limit: 5 }
])

Gerenciamento de índices

db.clientes.createIndex({ nome: 1 })           # Índice simples
db.clientes.createIndex({ nome: 1, idade: -1 }) # Índice composto
db.clientes.getIndexes()                      # Lista índices
db.clientes.dropIndex("nome_1")               # Remove índice

7. Segurança e Administração

Autenticação e usuários

db.createUser({
  user: "admin",
  pwd: "senha",
  roles: ["root"]
})

db.auth("usuario", "senha")     # Autentica no banco atual
show users                      # Lista usuários

Backup e restauração

mongodump --db nome_banco       # Backup do banco
mongorestore --db nome_banco    # Restaura banco

8. Transações (ACID)

session = db.getMongo().startSession()
session.startTransaction()
try {
  session.getDatabase("banco").colecao.updateOne(...)
  session.getDatabase("banco").outraColecao.insertOne(...)
  session.commitTransaction()
} catch (error) {
  session.abortTransaction()
} finally {
  session.endSession()
}

9. Monitoramento e Performance

db.currentOp()                  # Operações em execução
db.killOp(opid)                 # Cancela operação
db.collection.explain().find()   # Analisa plano de execução

Esta lista abrange desde operações básicas até recursos avançados do MongoDB, fornecendo um guia completo para desenvolvedores e administradores de bancos de dados.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment