MongoDB, verileri (/), (/ operatörlerle) ve (/) yöntemleriyle değiştirir. Güncellemeler tüm belgeleri değiştirmek yerine kullanır — bu önemli bir farktır.
MongoDB, verileri (/), (/ operatörlerle) ve (/) yöntemleriyle değiştirir. Güncellemeler tüm belgeleri değiştirmek yerine kullanır — bu önemli bir farktır.
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
Önemli: güncellemeler belirli alanları değiştirmek için operatörler ($set, $inc, $push, vb.) kullanır. Operatör olmadan, belgenin tamamını değiştirirsiniz — yaygın bir hata:
// ❌ 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
);
Ekle, güncelle ve sil işlemleri, uygulamaların MongoDB'de veriyi değiştirme yollarıdır — veri odaklı herhangi bir uygulamanın temeli olup, bunları anlamak gereklidir.
Yöntemleri bilmek (insertOne/insertMany oluşturmak için, updateOne/updateMany değiştirmek için, deleteOne/deleteMany kaldırmak için) temel bilgiyi kapsar.
En önemli ve en sık yanılınan nokta, MongoDB güncellemelerinin belirli alanları değiştirmek için update operatörleri ($set, $inc, $push, $pull, vb.) kullanması — ve kritik olarak, operatörü unutmak belgenin tamamını değiştirir (ünlü bir hata burada updateOne({...}, {age: 31}) diğer tüm alanları siler ve sadece age bırakır), bu nedenle alan düzeyindeki güncellemeler için her zaman $set (ve diğer operatörleri) kullanmayı anlamak doğruluk için gereklidir.
Yaygın operatörleri bilmek ($set, sayaçlar için $inc, diziler için $push/$pull/$addToSet — MongoDB'nin dizilerce zengin belgeleri göz önüne alındığında dizi operatörleri özellikle alakalı) günlük gerekli bilgidir.
Upsert'i anlamak ({ upsert: true } — eşleşme yoksa ekle, MongoDB'nin ekle-veya-güncelle yöntemi) yaygın ekle-veya-güncelle deseni için değerlidir.
Belirtilmeye değer olan deleteMany({}) (her şeyi sil) tehlikesidir — SQL'de WHERE eksikliği tehlikesine benzer.
Verileri değiştirmek temel olduğu ve MongoDB'nin operatör tabanlı güncellemeleri (belge değiştirme tehlikesiyle birlikte), dizi operatörleri ve upsert'in verileri nasıl doğru şekilde değiştirdiği için, insert/update/delete'i anlamak — özellikle kritik update-operatör farklılığı (yanlışlıkla belge değiştirmesinden kaçınmak) — herhangi bir MongoDB geliştirmesi için gereklidir; operatör tehlikesi özellikle gerçek hataların sık kaynağıdır.