MongoDB az adatokat (/), (/ operátorokkal), és (/) metódusokkal módosítja. A frissítések használnak a teljes dokumentum lecserélése helyett — ez egy fontos különbség.
MongoDB az adatokat (/), (/ operátorokkal), és (/) metódusokkal módosítja. A frissítések használnak a teljes dokumentum lecserélése helyett — ez egy fontos különbség.
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
Fontos: a frissítések operátorokat használnak ($set, $inc, $push, stb.) az adott mezők módosításához. Operátor nélkül az egész dokumentumot lecserélnéd — ez egy gyakori hiba:
// ❌ 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
);
Az insert, update és delete műveletek az, ahogy az alkalmazások módosítják az adatokat a MongoDB-ben — ez alapvető minden adatvezérelt alkalmazásban, ezért az ezeknek az ismerete elengedhetetlen mindennapi tudás.
Az alapok megismeréséhez elegendő a metódusok ismerete (insertOne/insertMany létrehozáshoz, updateOne/updateMany módosításhoz, deleteOne/deleteMany törléshez).
A legfontosabb és gyakran félreértelmezett pont az, hogy a MongoDB frissítések update operátorokat használnak ($set, $inc, $push, $pull, stb.) az adott mezők módosításához — és kritikusan fontos, hogy az operátor hiánya az egész dokumentumot lecseréli (egy gyakori csapda, ahol updateOne({...}, {age: 31}) törli az összes többi mezőt, csak az age marad), ezért alapvető a helyes működéshez, hogy mindig a $set-et (és a többi operátort) használd a mezőszintű frissítésekhez.
A gyakori operátorok ismerete ($set, $inc számlálókhoz, $push/$pull/$addToSet tömbökhöz — a tömboperátorok különösen relevánsak a MongoDB tömbgazdag dokumentumai miatt) fontos mindennapi tudás.
Az upsert megértése ({ upsert: true } — insert ha nincs egyezés, a MongoDB insert-vagy-update módja) értékes az általános insert-vagy-update mintához.
Erdemes megjegyezni továbbá a deleteMany({}) veszélye (mindent törlésével — hasonló az SQL-ben a hiányzó WHERE veszélyéhez).
Mivel az adatmódosítás alapvető, és mivel a MongoDB operátor alapú frissítései (a dokumentum-csere-csapda mellett), a tömboperátorok és az upsert az, ahogy helyesen módosítod az adatokat, az insert/update/delete megértése — különösen az kritikus update-operátor különbség (a véletlen dokumentumcsere elkerüléséhez) — alapvető, kötelező ismeret bármely MongoDB fejlesztéshez, ahol az operátor csapda különösen gyakori forrása a valódi bugoknak.
IT interjúkérdések gyűjteménye részletes válaszokkal — Juniortól Seniorig.
Adományozás