MongoDB Örnekle Update() Belgesi
\
⚡ Akıllı Özet
MongoDB Update() belge işlemleri, bir koleksiyondaki mevcut kayıtları değiştirir. update() yöntemi, belgeleri seçmek için bir koşul ve alan değerlerini değiştirmek için $set gibi bir değiştirici alır ve multi seçeneği, eşleşen birden fazla belgeyi aynı anda günceller.

Temel belge güncellemeleri
MongoDB Bir koleksiyonun belgelerini güncellemek için update() komutunu sağlar. Yalnızca güncellemek istediğiniz belgeleri güncellemek için güncelleme bildirimine yalnızca seçilen belgelerin güncellenmesini sağlayacak bir ölçüt ekleyebilirsiniz.
Komuttaki temel parametreler, belgenin güncellenmesi gereken bir durumdur ve ardından yapılması gereken değişikliktir.
Aşağıdaki örnek bunun nasıl yapılabileceğini göstermektedir.
) 1 Adım Güncelleme komutunu verin
) 2 Adım Hangi belgenin güncellenmesi gerektiğine karar vermek için kullanmak istediğiniz koşulu seçin. Örneğimizde Çalışan kimliği 22 olan belgeyi güncellemek istiyoruz.
) 3 Adım Alan Adını değiştirmek için set komutunu kullanın
) 4 Adım Hangi Alan Adını değiştirmek istediğinizi seçin ve yeni değeri buna göre girin.
db.Employee.update( {"Employeeid" : 1}, {$set: { "EmployeeName" : "NewMartin"}});
Komut başarıyla yürütülürse, aşağıdaki Çıktı gösterilecektir
Çıktı:
Çıktı, bir kaydın koşulla eşleştiğini ve dolayısıyla ilgili alan değerinin değiştirildiğini açıkça göstermektedir.
MongoDB Güncelle Operaları
$set operatörü bir alanı değiştirmenin en yaygın yoludur, ancak MongoDB Farklı ihtiyaçlar için çeşitli güncelleme operatörleri sunar. Bunları, `$set` ile birlikte veya onun yerine `update()` fonksiyonunun ikinci argümanına yerleştirirsiniz:
- $set: Bir alanın değerini ayarlar; alan yoksa oluşturur.
- $unset: Belgeden bir alanı tamamen kaldırır.
- $art: Belirtilen miktarda sayısal bir alanı artırır veya azaltır.
- $mul: Sayısal bir alanın değerini çarpar.
- $rename: Bir alanın adını yeni bir adla değiştirir.
- $ itme: Bir dizi alanına değer ekler.
- $çekme: Bir dizi alanından eşleşen değerleri kaldırır.
Her operatör yalnızca belirttiğiniz alanları hedefler ve belgenin geri kalanını değiştirmez. Birden fazla alanı aynı anda değiştirmek için tek bir update() çağrısında birden fazla operatörü birleştirebilirsiniz; bu, güncellemelerin hassas olmasını sağlar ve korumak istediğiniz verilerin üzerine yazılmasını önler.
Birden Çok Değeri Güncelleme
Birden fazla/toplu dokümanın aynı anda güncellenmesini sağlamak MongoDB çoklu seçeneğini kullanmanız gerekir çünkü aksi takdirde varsayılan olarak aynı anda yalnızca bir belge değiştirilir.
Aşağıdaki örnek birçok belgenin nasıl güncelleneceğini göstermektedir.
Bu örnekte öncelikle Çalışan kimliği “1” olan belgeyi bulacağız ve Çalışan adını “Martin” yerine “NewMartin” olarak değiştireceğiz.
) 1 Adım Güncelleme komutunu verin
) 2 Adım Hangi belgenin güncellenmesi gerektiğine karar vermek için kullanmak istediğiniz koşulu seçin. Örneğimizde Çalışan ID’si “1” olan dokümanın güncellenmesini istiyoruz.
) 3 Adım Hangi Alan Adlarını değiştirmek istediğinizi seçin ve yeni değerlerini buna göre girin.
db.Employee.update ( { Employeeid : 1 }, { $set : { "EmployeeName" : "NewMartin", "Employeeid" : 22 } } )
Komut başarıyla yürütülürse ve çalıştırırsanız "bulmak" Çalışan kimliği 22 olan belgeyi arama komutunu verdiğinizde aşağıdaki çıktıyı göreceksiniz
Çıktı:
Çıktı, bir kaydın koşulla eşleştiğini ve dolayısıyla ilgili alan değerinin değiştirildiğini açıkça göstermektedir.
Bir belgeye nasıl ekleme/çıkarma (upsert) işlemi yapılır? MongoDB
Upsert, güncelleme ve ekleme işlemlerinin birleşimidir. Etkinleştirdiğinizde, MongoDB Koşulu karşılayan belgeyi günceller veya eşleşme bulunmazsa yeni bir belge ekler. Bu, bir kaydın zaten mevcut olup olmadığından emin olmadığınız durumlarda kullanışlıdır.
Bir upsert işlemi gerçekleştirmek için, update() fonksiyonunun üçüncü argümanı olarak upsert seçeneğini true olarak ayarlayın:
db.Employee.update( {Employeeid: 5}, {$set: {EmployeeName: "Sofia"}}, {upsert: true} )
İşte olan:
- Çalışan kimlik numarası 5 olan bir belge mevcutsa, MongoDB Çalışan Adı alanını günceller.
- Eğer böyle bir belge mevcut değilse, MongoDB Employeeid 5 ve EmployeeName " ile yeni bir belge ekler.Sofia".
Upsert işlemleri, sayaçlar, ayarlar ve bir kaydı ilk kullanımda oluşturup daha sonra güncellemek istediğiniz her türlü iş akışı için kullanışlıdır. Modern sistemlerde MongoDBAynı davranış, seçeneklere {upsert: true} eklenerek updateOne() ve updateMany() fonksiyonları aracılığıyla da elde edilebilir. Koşula dikkat edin, çünkü geniş bir filtre ile upsert birleşimi beklenmedik belgeler oluşturabilir.
updateOne() vs updateMany() vs replaceOne()
`update()` metodu artık eski bir komuttur. Modern MongoDB Sürücüler davranışlarını üç daha net yönteme ayırdılar. Aşağıdaki tablo bunları karşılaştırmaktadır:
| Yöntem | Ne yapar | Etkilenen belgeler |
|---|---|---|
| updateOne() | İlk eşleşen belgeye güncelleme operatörlerini uygular. | Bir |
| güncellemeMany() | Eşleşen her belgeye güncelleme operatörlerini uygular. | çok |
| değiştirBir() | Eşleşen ilk belgenin tamamını yeni bir belgeyle değiştirir. | Bir |
Tek bir hedefli değişiklik için updateOne() yöntemini, eski çoklu seçenek yerine updateMany() yöntemini ve düzenleme alanları yerine tüm belgeyi değiştirmek istediğinizde replaceOne() yöntemini kullanın. Bu yöntemler, kaç belgenin eşleştiğini ve kaçının değiştirildiğini gösteren net bir sonuç döndürür; bu da onları update() yöntemine göre daha güvenli ve hata ayıklaması daha kolay hale getirir.


