MongoDB modifikuoja duomenis naudodama (/), (/ su operatoriais) ir (/) metodus. Atnaujinimuose naudojami , o ne viso dokumento pakeitimas — tai svarbus skirtumas.
MongoDB modifikuoja duomenis naudodama (/), (/ su operatoriais) ir (/) metodus. Atnaujinimuose naudojami , o ne viso dokumento pakeitimas — tai svarbus skirtumas.
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
Svarbu: atnaujinimuose naudojami operatoriai ($set, $inc, $push ir kt.) konkrečiems laukams modifikuoti. Be operatoriaus, jūs pakeistumėte visą dokumentą — tai dažna klaida:
// ❌ 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
);
Įterpimo, atnaujinimo ir trynimo operacijos yra tai, kaip aplikacijos modifikuoja duomenis MongoDB sistemoje, o tai yra fundamentalu bet kuriai duomenimis grindžiamai aplikacijai, todėl jų supratimas yra būtina kasdienė žinojimu.
Žinojimas metodų (insertOne/insertMany kūrimui, updateOne/updateMany modifikavimui, deleteOne/deleteMany šalinimui) apima pagrindus.
Svarbiausia ir dažniausiai neteisingai suprantama vieta yra tai, kad MongoDB atnaujinimuose naudojami atnaujinimo operatoriai ($set, $inc, $push, $pull ir kt.) konkrečiems laukams modifikuoti — ir kritiškai svarbu, jei pamiršite operatorių, bus pakeistas visas dokumentas (garsus klaiduoti scenarijus, kai updateOne({...}, {age: 31}) ištrina visus kitus laukus, palikdamas tik age), todėl supratimas, kad visada reikia naudoti $set (ir kitus operatorius) laukų lygio atnaujinimams, yra būtinas teisingumui.
Žinojimas dažnų operatorių ($set, $inc skaitliukams, $push/$pull/$addToSet masyvams — masyvo operatoriai ypač aktualūs, atsižvelgiant į MongoDB masyvaime turtingus dokumentus) yra svarbi kasdienė žinojimu.
Supratimas upsert ({ upsert: true } — įterpimas, jei nėra atitikmens, MongoDB „įterpti arba atnaujinti