İçeriğe geç

MongoDB – Update Many (Toplu Update İşlemi)

Merhabalar,

MongoDB’de toplu update işlemi özellikle SQL severlerin karşılaşabileceği problemlerin başında. Zira internette her aramada yeterli ve geçerli bir kaynak bulmak maalesef söz konusu olamıyor.

Bu nedenle kısaca bahsedeyim istedim;

[highlight]

db.collection.updateMany(
   <filter>,
   <update>
)

[/highlight]

Burada görünen “filter” alanı aslına bakarsanız SQL’deki “where” koşulunun yerine geçiyor. Yani şu şekilde yazılabilir örneğin;

[highlight]

{ Name: "Türkiye" }

[/highlight]

Bu koşulla gittiğimizde ilgili güncelleme sadece “Name” field’ı “Türkiye” olan kayıtlar için yapılacaktır.

Son olarak da asıl konu olan “<update>” bölümü. Bu kısmı da şu şekilde özetleyebilirim;

[highlight]

db.Country.updateMany(
{}, 
{$set: { "Published" : false }}
)

[/highlight]

Görüldüğü üzere burada herhangi bir koşul vermeden “filter” alanını “{}” şeklinde geçtim ve ardından asıl güncellememi yazdım. Yani hiçbir koşula bağımlı kalmadan “Country” dökümanındaki tüm kayıtların “Published” field’larını “false” olarak işaretledim. Sonrasında aşağıdaki gibi bir ekranla karşılaşacağım.

Buradan da göreceğiniz üzere ilgili sorgum çalıştığında tam olarak “237” kayıt bu işlemden etkilendi. Ki bu da zaten ilgili dökümandaki tüm kayıtlarımın sayısına eşit.

Yani istediğimi başarılı bir şekilde gerçekleştirmiş oldum.

Şimdi gelelim filter’ı kullanarak, yani bir bakıma “where” koşul cümleciğiyle update ve/veya updateMany işlemi yapma konusuna.

lte (<) Küçüktür Sorgusu Kullanarak Update Many Yapmak

[highlight]

db.getCollection(‘Product’).updateMany(
{“CreatedOnUtc” : {$lte: ISODate(“2018-11-12T13:40:07.314Z”)}},
{$set: { “Published” : true }}
)

[/highlight]

 

gte (>) Büyüktür Sorgusu Kullanarak Update Many Yapmak

[highlight]

db.getCollection(‘Product’).updateMany(
{“CreatedOnUtc” : {$gte: ISODate(“2018-11-12T13:40:07.314Z”)}},
{$set: { “Published” : true }}
)

[/highlight]

Şimdilik updatemany işlemimizi bu şekilde özetleyebiliriz. Aslına bakarsanız buradaki “filter” kısmını Id, vb… unic bir alana yönlendirirseniz aynı methodu hiç değiştirmeden updateOne işlemini yani tekil update işlemini de aynı şekilde yapabilmeniz elbette mümkün.

Şimdilik bu kadar. Yorumlarınız ve/veya sorularınız olursa beklerim. Teşekkürler…

0 0 votes
Article Rating
Tarih:AnasayfaMongoDB
Subscribe
Bildir
guest
0 Yorum
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x