MongoDB wijzigt gegevens met (/), (/ met operators), en (/) methoden. Updates gebruiken in plaats van hele documenten te vervangen — een belangrijk onderscheid.
MongoDB wijzigt gegevens met (/), (/ met operators), en (/) methoden. Updates gebruiken in plaats van hele documenten te vervangen — een belangrijk onderscheid.
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
Belangrijk: updates gebruiken operators ($set, $inc, $push, enz.) om specifieke velden aan te passen. Zonder een operator zou je het hele document vervangen — een veel voorkomende valkuil:
// ❌ 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
);
Insert-, update- en delete-bewerkingen zijn hoe applicaties gegevens wijzigen in MongoDB, fundamenteel voor elke datagestuurde applicatie, dus het begrijpen ervan is essentieel dagelijks kennis.
Het kennen van de methoden (insertOne/insertMany voor creëren, updateOne/updateMany voor wijzigen, deleteOne/deleteMany voor verwijderen) bestrijkt de basisbeginselen.
Het meest belangrijke en vaak verkeerd begrepen punt is dat MongoDB updates update operators ($set, $inc, $push, $pull, enz.) gebruiken om specifieke velden aan te passen — en cruciaal, het vergeten van de operator vervangt het hele document (een beruchte valkuil waarbij updateOne({...}, {age: 31}) alle andere velden wist, waarbij alleen age overblijft), dus het begrijpen dat je altijd $set (en de andere operators) voor updates op veldniveau moet gebruiken is essentieel voor juistheid.
Het kennen van de veel voorkomende operators ($set, $inc voor tellers, $push/$pull/$addToSet voor arrays — array operators zijn vooral relevant gezien MongoDB's array-rijke documenten) is belangrijk dagelijks kennis.
Het begrijpen van upsert ({ upsert: true } — invoegen als geen match bestaat, MongoDB's insert-of-update) is waardevol voor het veel voorkomende insert-of-update patroon.
Het is ook waard op te merken dat deleteMany({}) gevaarlijk is (alles verwijderen — vergelijkbaar met het ontbrekende-WHERE-gevaar in SQL).
Omdat het wijzigen van gegevens fundamenteel is, en omdat MongoDB's operator-gebaseerde updates (met de valkuil van documentvervanging), array operators en upsert hoe je correct gegevens wijzigt, is het begrijpen van insert/update/delete — vooral het kritieke onderscheid tussen update-operator (voorkoming van onbedoelde documentvervanging) — essentieel, moet-kennen kennis voor elke MongoDB-ontwikkeling, waarbij de operator-valkuil in het bijzonder een frequente bron van echte bugs is.