Conceitos de banco de dados NoSQL e operações CRUD.
SELECT * FROM usuarios
WHERE idade > 18;
db.usuarios.find({
idade: { $gt: 18 }
})
Contém múltiplas collections (equivalente ao "banco")
Grupo de documentos (equivalente à "tabela")
Objeto JSON com dados (equivalente à "linha")
Par chave-valor dentro do documento (equivalente à "coluna")
{
"_id": "64f1a2b3c4d5e6f7a8b9c0d1",
"nome": "Ana Silva",
"email": "ana@email.com",
"idade": 22,
"curso": "Programação Web",
"notas": [8.5, 9.0, 7.8],
"endereco": {
"cidade": "São Paulo",
"estado": "SP"
},
"ativo": true,
"createdAt": "2025-01-15T10:30:00Z"
}
_id — identificador único gerado automaticamente (ObjectId)mongodb.com/atlas
// Formato da connection string
mongodb+srv://<usuario>:<senha>@
cluster0.abc123.mongodb.net/
<database>?retryWrites=true
// Exemplo real
mongodb+srv://aluno:senha123@
cluster0.abc123.mongodb.net/
minha-api?retryWrites=true
.env).
// Inserir um documento
db.alunos.insertOne({
nome: "Ana Silva",
email: "ana@email.com",
idade: 22,
curso: "Programação Web"
})
// Inserir vários documentos
db.alunos.insertMany([
{
nome: "Carlos",
idade: 20
},
{
nome: "Maria",
idade: 25
}
])
// Buscar todos
db.alunos.find()
// Buscar com filtro
db.alunos.find({ idade: 22 })
// Buscar um documento
db.alunos.findOne({
email: "ana@email.com"
})
// Projeção (selecionar campos)
db.alunos.find(
{},
{ nome: 1, email: 1 }
)
// Maior que
{ idade: { $gt: 18 } }
// Menor ou igual
{ idade: { $lte: 30 } }
// Dentro de uma lista
{ curso: { $in: ["Web", "Mobile"] } }
// AND lógico
{ idade: { $gte: 18 }, ativo: true }
// OR lógico
{ $or: [
{ idade: 20 },
{ idade: 25 }
]}
// Atualizar um campo
db.alunos.updateOne(
{ email: "ana@email.com" },
{ $set: { idade: 23 } }
)
// Incrementar um valor
db.alunos.updateOne(
{ nome: "Ana" },
{ $inc: { idade: 1 } }
)
// Atualizar vários documentos
db.alunos.updateMany(
{ curso: "Web" },
{ $set: { ativo: true } }
)
// Adicionar elemento ao array
db.alunos.updateOne(
{ nome: "Ana" },
{ $push: { notas: 9.5 } }
)
$set $inc $push $pull $unset
// Remover um documento
db.alunos.deleteOne({
email: "ana@email.com"
})
// Remover vários documentos
db.alunos.deleteMany({
ativo: false
})
// Remover TODOS (cuidado!)
db.alunos.deleteMany({})
deleteMany({}) sem filtro apaga TODOS os documentos da collection!
// Ordem crescente
db.alunos.find()
.sort({ nome: 1 })
// Ordem decrescente
db.alunos.find()
.sort({ idade: -1 })
// Primeiros 5 resultados
db.alunos.find()
.limit(5)
// Pular + limitar (paginação)
db.alunos.find()
.skip(10).limit(5)
// Total de documentos
db.alunos.countDocuments()
// Com filtro
db.alunos.countDocuments({
ativo: true
})
escola com uma collection alunosExpress + MongoDB com Mongoose.