MongoDB muokkaa dataa -operaatioilla (/), -operaatioilla (/ operaattoreiden kanssa) ja -operaatioilla (/). Päivitykset käyttävät koko dokumentin korvaamisen sijaan — tämä on tärkeä ero.
MongoDB muokkaa dataa -operaatioilla (/), -operaatioilla (/ operaattoreiden kanssa) ja -operaatioilla (/). Päivitykset käyttävät koko dokumentin korvaamisen sijaan — tämä on tärkeä ero.
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
Tärkeää: päivitykset käyttävät operaattoreita ($set, $inc, $push, jne.) spesifisten kenttien muokkaamiseen. Ilman operaattoria korvaisit koko dokumentin — yleinen virhe:
// ❌ 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- ja delete-operaatiot ovat tapa, jolla sovellukset muokkaavat dataa MongoDBssa, ja ne ovat fundamentaaleja kaikille data-ohjatuille sovelluksille, joten niiden ymmärtäminen on välttämätöntä jokapäiväistä tietoa.
Menetelmien tunteminen (insertOne/insertMany luontiin, updateOne/updateMany muokkaamiseen, deleteOne/deleteMany poistamiseen) kattaa perusteet.
Tärkein ja useimmin väärinymmärretty kohta on, että MongoDBn päivitykset käyttävät update-operaattoreita ($set, $inc, $push, $pull, jne.) spesifisten kenttien muokkaamiseen — ja ratkaisevasti, operaattorin puuttuminen korvaa koko dokumentin (kuuluisa virhe, jossa updateOne({...}, {age: 31}) poistaa kaikki muut kentät, jäljelle jää vain age), joten on olennaista ymmärtää aina käyttää $setia (ja muita operaattoreita) kentän tason päivityksille.
Yleisten operaattoreiden tunteminen ($set, $inc laskureille, $push/$pull/$addToSet taulukoille — taulukko-operaattorit erityisen relevantteja MongoDBn taulukko-rikkaille dokumenteille) on tärkeää jokapäiväistä tietoa.
Upsertin ymmärtäminen ({ upsert: true } — lisää jos ei vastaavuutta löydy, MongoDBn insert-or-update-kuvio) on arvokasta yleiselle insert-tai-päivitys-mallille.
Kannattaa myös huomata deleteMany({}):n vaara (kaiken poistaminen — samankaltainen riski kuin SQL:n puuttuva WHERE-lauseke).
Koska datan muokkaaminen on fundamentaalista, ja koska MongoDBn operaattori-pohjaiset päivitykset (dokumentin korvaamisen riskinä), taulukko-operaattorit ja upsert ovat tapoja muuttaa dataa oikein, insert/update/delete-operaatioiden ymmärtäminen — erityisesti kriittinen update-operaattori-ero (vahingollisen dokumentin korvaamisen välttäminen) — on olennaista ja välttämätöntä tietoa kaikelle MongoDB-kehitykselle, jossa operaattori-virhe erityisesti on usein todellisten virheiden lähde.