MongoDB modifica dados com métodos (/), (/ com operadores) e (/). As atualizações usam em vez de substituir documentos inteiros — uma distinção importante.
MongoDB modifica dados com métodos (/), (/ com operadores) e (/). As atualizações usam em vez de substituir documentos inteiros — uma distinção importante.
insertOneinsertManyupdateOneupdateManydeleteOnedeleteManydb.users.insertOne({ name: "Ann", age: 30 }); // → returns the inserted _id
db.users.insertMany([{ name: "Bob" }, { name: "Carol" }]); // bulk insert (efficient)
// updateOne — filter (which doc) + update (with OPERATORS)
db.users.updateOne(
{ name: "Ann" },
{ $set: { age: 31, status: "active" } } // $set: change specific fields
);
// common update operators
{ $set: { field: value } } // set/change a field
{ $unset: { field: "" } } // remove a field
{ $inc: { count: 1 } } // increment a number
{ $push: { tags: "new" } } // add to an array
{ $pull: { tags: "old" } } // remove from an array
{ $addToSet: { tags: "x" } } // add to array only if not present
db.users.updateMany({ active: false }, { $set: { archived: true } }); // update all matching
Importante: atualizações usam operadores ($set, $inc, $push, etc.) para modificar campos específicos. Sem um operador, você substituiria o documento inteiro — uma armadilha comum:
// ❌ this REPLACES the whole document (loses other fields!)
db.users.updateOne({ name: "Ann" }, { age: 31 }); // Ann now has ONLY age!
// ✅ use $set to change just the field
db.users.updateOne({ name: "Ann" }, { $set: { age: 31 } });
db.users.deleteOne({ name: "Ann" }); // delete the first match
db.users.deleteMany({ active: false }); // delete all matching
db.users.deleteMany({}); // ⚠️ deletes ALL documents!
db.users.updateOne(
{ email: "[email protected]" },
{ $set: { name: "Ann" } },
{ upsert: true } // if no match, INSERT a new document
);
Operações de insert, update e delete são como aplicações modificam dados no MongoDB, fundamentais para qualquer aplicação orientada a dados, então entendê-las é conhecimento essencial do dia a dia.
Conhecer os métodos (insertOne/insertMany para criar, updateOne/updateMany para modificar, deleteOne/deleteMany para remover) cobre o básico.
O ponto mais importante e frequentemente confundido é que as atualizações do MongoDB usam operadores de atualização ($set, $inc, $push, $pull, etc.) para modificar campos específicos — e crucialmente, esquecer o operador substitui o documento inteiro (uma armadilha notória onde updateOne({...}, {age: 31}) apaga todos os outros campos, deixando apenas age), então entender sempre usar $set (e os outros operadores) para atualizações em nível de campo é essencial para a correção.
Conhecer os operadores comuns ($set, $inc para contadores, $push/$pull/$addToSet para arrays — operadores de array sendo especialmente relevantes dado que os documentos do MongoDB são ricos em arrays) é conhecimento essencial do dia a dia.
Entender upsert ({ upsert: true } — insira se nenhuma correspondência existir, o insert-or-update do MongoDB) é valioso para o padrão comum de insert-or-update.
Também vale notar o perigo de deleteMany({}) (deletar tudo — similar ao perigo de missing-WHERE em SQL).
Como modificar dados é fundamental, e como as atualizações baseadas em operadores do MongoDB (com a armadilha de substituição de documento), operadores de array e upsert são como você muda dados corretamente, entender insert/update/delete — especialmente a distinção crítica de operador de atualização (evitando substituição acidental de documento) — é conhecimento essencial e obrigatório para qualquer desenvolvimento com MongoDB, onde a armadilha do operador em particular é uma fonte frequente de bugs reais.