MongoDB ændrer data med (/), (/ med operatorer) og (/) metoder. Opdateringer bruger i stedet for at erstatte hele dokumenter — en vigtig sondring.
MongoDB ændrer data med (/), (/ med operatorer) og (/) metoder. Opdateringer bruger i stedet for at erstatte hele dokumenter — en vigtig sondring.
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
Vigtigt: opdateringer bruger operatorer ($set, $inc, $push osv.) til at ændre specifikke felter. Uden en operator ville du erstatte hele dokumentet — en almindelig fælde:
// ❌ 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
);
Indsæt-, opdaterings- og sletningsoperationer er hvordan applikationer ændrer data i MongoDB, fundamentalt for enhver datadrevet applikation, så forståelse af dem er væsentlig hverdagsviden.
At kende metoderne (insertOne/insertMany til oprettelse, updateOne/updateMany til ændring, deleteOne/deleteMany til fjernelse) dækker det grundlæggende.
Det vigtigste og mest misforstået punkt er, at MongoDB-opdateringer bruger update-operatorer ($set, $inc, $push, $pull osv.) til at ændre specifikke felter — og afgørende, hvis du glemmer operatoren, erstattes hele dokumentet (en berygtet fælde hvor updateOne({...}, {age: 31}) sletter alle andre felter, hvilket kun efterlader age), så forståelse af at altid bruge $set (og de andre operatorer) til feltniveauopdateringer er afgørende for korrekthed.
At kende de almindelige operatorer ($set, $inc til tællere, $push/$pull/$addToSet til arrays — array-operatorer værende særlig relevant givet Mongodbs array-rige dokumenter) er vigtig hverdagsviden.
Forståelse af upsert ({ upsert: true } — indsæt hvis ingen match findes, Mongodbs insert-eller-opdater) er værdifuld for det almindelige insert-eller-opdater-mønster.
Det er også værd at bemærke faren ved deleteMany({}) (slette alt — svarende til den manglende-WHERE-fare i SQL).
Fordi dataændring er fundamental, og fordi Mongodbs operatorbaserede opdateringer (med dokumenterstattels-fælden), array-operatorer og upsert er hvordan du korrekt ændrer data, forståelse af insert/update/delete — især den kritiske update-operator-sondring (undgå utilsigtet dokumenterstatning) — er vigtig, må-vide-viden for enhver MongoDB-udvikling, hvor operatorfælden særlig er en hyppig kilde til rigtige fejl.