MongoDB Nedir? Nasıl Kullanılır ? — Bölüm 3

Tarık Kabasakal
5 min readMar 7, 2021

--

Bir önceki yazıda MongoDB’de koleksiyonlara belge nasıl eklenir, koleksiyonlarda sorgu yapma gibi bilgiler verildi. Bu yazıda ise belge güncelleme işlemleri, silme işlemleri ve ek methodlar hakkında bilgi verilecektir.

Bölüm 1 : Okumak için tıklayınız.

Bölüm 2 : Okumak için tıklayınız.

MongoDB Belge Güncelleme İşlemleri (Update)

MongoDB’de belge güncelleme işlemi 3 farklı method ile yapılabilir. Bunlar;

  • db.collection_name.updateOne(<filtre>, <güncelleme işlemleri>, <opsiyonlar>)
  • db.collection_name.updateMany(<filtre>, <güncelleme işlemleri>, <opsiyonlar>)
  • db.collection_name.replaceOne(<filtre>, <güncelleme işlemleri>, <opsiyonlar>)

MongoDB’de güncelleme işlem methodlarında filtre kısmına koleksiyondaki hangi belge/belgelerin güncelleneceğini bulmak için gerekli parametreler girilir. Güncelleme işlemleri kısmına ise hangi alan/alanların güncelleneceğini, yeni değerlerini veya güncelleme zamanı gibi veriler eklenir. MongoDB’de güncellenecek değerler için $set operatörü kullanılmaktadır. Opsiyonlar kısmı için ise dokümantasyon incelenebilir.

db.collection_name.updateOne güncelleme işlemi

updateOne() methodu ile yapılan güncelleme isteğinde filtre alanında girilen parametreler koleksiyon içinde uygulanır ve elde edilen sonucun ilki güncellenir.

Aşağıdaki örnekte username alanı username1 olan kaydın phone alanı ve yaşı güncellenmiştir. Göründüğü gibi username1 diye 2 kayıt var fakat updateOne dediğimiz için sadece ilk bulunan kayıt güncellenmiştir.

Not: Eğer güncellenme zamanını tutmak istiyorsak bunun için currentDate operatörü kullanılabilir. lastModified alanı oluşturulup bu işlem sağlanabilir. Aşağıdaki örnekte olduğu gibi $set parametresini girdikten sonra currentDate operatörü kullanılıyor. Eğer lastModified alanı yoksa bu alan otomatik mongo tarafından oluşturuluyor. Örnek aşağıdaki gibidir;

db.collection_name.updateMany güncelleme işlemi

updateMany() methodu ile yapılan güncelleme isteğinde filtre alanında girilen parametreler koleksiyon içinde uygulanır ve elde edilen sonucun tüm kayıtlar güncellenir.

Aşağıdaki örnekte username alanı username1 olan kaydın phone alanı ve yaşı güncellenmiştir. Göründüğü gibi username1 diye 2 kayıt var fakat updateMany dediğimiz için 2 kayıtta güncellenmiştir.

db.collection_name.replaceOne güncelleme işlemi

_id alanı dışında bir belgenin tüm içeriğini değiştirmek için replaceOne() methodu kullanılabilir. Yeni belge replaceOne() methoduna değişken parametre olarak verilir. Değiştirilen belge, orijinal belgeden farklı alanlara sahip olabilir. Değiştirme belgesinde, _id alanı değişmez olduğundan _id alanını atlayabilirsiniz; ancak, _id alanını eklerseniz, mevcut değerle aynı değere sahip olmalıdır.

Aşağıdaki örnekte username alanı username2 olan veri için tüm içeriği değiştirilmiştir. Görüldüğü gibi _id alanı dışında tüm alanlar değişmiştir.

Not: db.collection_name.update() diye bir method daha vardır. Bu method normalde tek güncelleme işlemi yapar fakat options kısmında {multi:true} eklenirse çoklu güncelleme yapar. Detaylar için lütfen dokümantasyonu inceleyiniz.

MongoDB Belge Silme İşlemleri (Delete)

MongoDB’de silme işlemi 2 farklı method ile yapılabilir. Bunlar;

  • db.collection_name.deleteOne(<anahtar> : <deger>)
  • db.collection_name.deleteMany(<anahtar> : <deger>)

Silme işlemlerinde silinecek veriyi filtrelerken sorgu operatörlerinde geçerli olduğunu unutmayalım.

Eğer bir koleksiyonun içindeki tüm verileri silmek istiyorsak db.collenction_name.deleteMany({}) şeklinde bunu yapabiliriz.

db.collection_name.deleteOne silme işlemi

.deleteOne() methodunun içine yazılan filtreleme parametreleri koleksiyonda aratılır ve bulunan ilk belge silinir.

Aşağıdaki örnekte username alanı username4 olan değerin silindiğini görebiliriz.

db.collection_name.deleteMany silme işlemi

.deleteMany() methodunun içine yazılan filtreleme parametreleri koleksiyonda aratılır ve bulunan tüm belgeler silinir.

Aşağıdaki örnekte username alanı username1 olan değerin silindiğini görebiliriz.

Bonus Methodlar

MongoDB’de temel ekleme, sorgulama, güncelleme ve silme methodları bukadar olsada her zaman dediğimiz gibi MongoDB çok esnek ve çok güçlü bir yapısı vardır ve bazı methodları bu temel methodların ayrı ayrı yaptığı işleri tek seferde yapmaktadır. Bunlardan bir kaçından bahsedecek olursak;

db.collection_name.findOneAndDelete() methodu

findOneAndDelete() methodu bir sıralama seçeneği sağlar. Method, belirtilen sıraya göre sıralanmış ilk belgenin silinmesine izin verir. Geri dönüş olarakta silinen belge gönderilir.

Aşağıdaki örnekte belgelerdeki username alanı username3 olan yaş alanının en yüksek değere sahip olan belgeyi silmek istiyoruz. Bu yüzden findOneAndDelete() methodunu kullanarak username alanına göre filtreleme yapıp age alanına göre sıralama yapıyoruz ve birinci değeri siliyoruz.

Not:Sıralama yapmak için sort parametresini kullanıyoruz ve hangi alana göre sıralama yapılacaksa o alanlar buraya belirtilir. Sıralama yapılacak alanın başına 1 verilirse küçükten büyüye bir sıralama olur, -1 verilir ise büyükten küçüğe bir sıralama olur.

db.collection_name.findOneAndUpdate() methodu

findOneAndUpdate() methodu bir sıralama seçeneği sağlar. Method, belirtilen sıraya göre sıralanmış ilk belgenin güncellenmesine izin verir. Geri dönüş olarakta güncellenen belge gönderilir.

Aşağıdaki örnekte belgelerdeki username alanı username3 olan yaş alanının en yüksek değere sahip olan belgenin telefon numarasını güncellemek istiyoruz. Bu yüzden findOneAndMany() methodunu kullanarak username alanına göre filtreleme yapıp age alanına göre sıralama yapıyoruz ve birinci değeri güncelliyoruz.

Not:İşlem sonunda gönderilen belge, güncelleme işlemi yapılmadan önceki halidir! Eğer güncelleme işlemi yapılmış belgenin geri dönüşünü istiyorsanız options kısmına ‘returnNewDocument:true’ değerini yazmanız gerekmektedir. Örneği aşağıdaki gibidir;

db.collection_name.count() methodu

Belirli filtreleme sonucunda kaç adet belge olduğunu öğrenmek için .count() methodu kullanılır.

Aşağıdaki örnekte yaşı 40 dan büyük olan verilerin sayısı öğrenilmiştir.

MongoDB’nin sorgu dili çok yalın ve basittir. Mantığını anladıktan sonra çok rahat bir şekilde ihtiyacınız olan sorguları yazabilirsiniz veya diğer methodlarını anlayabilirsiniz. Daha detaylı bilgi için lütfen MongoDB’nin kendi sitesini ziyaret edin.

MongoDB ile ilgili yazı serisi burada bitmiştir. Okuduğunuz için teşekkürler.

--

--