12 Nisan 2021 Pazartesi

MongoDB Arama Listeleme ve Silme

    Bir önceki yazımda Mongodb'ye kısaca giriş yapmıştım ve bir tabloya veri eklemeyi yazmıştım. Bu günkü yazımda da kısaca tablomdaki kayıtları getirmeyi ve yapısı çok benzer olduğu için silme işlemini anlatacağım. Tekrar hatırlatayım. Yazdığım komutlar mongo ya consoldan direk olarak yollayabileceğiniz mongodb komutları. Eğer C#, java yada benzer bir dil üzerinden erişiyorsanız o dilde kullandığınız SDK yapısına uygun olarak komutları değiştirmeniz gerekir.

    MongoDB Arama (Find) komutu

    Mongoda arama ve listeleme için Find ve Aggregate komutlarından birisi kullanılır. aggregate komutu hem işlevi hem de kullanımı biraz karmaşık olduğu için daha sonra tek bir yazıda uzun uzun anlatmayı düşünüyorum. Bu yazıda find komutu ile bir kaç örnek kullanım göstereceğim. En basit kullanımı şöyledir. Yazdığım mongo komutlarının hemen altına Sql dillerindeki karşılığını yazmayı düşünüyorum. Böylece normal veri tabanları ile az çok haşır neşir olanlar daha hızlı anlayabilir.

db.collectionName.find({})

Sql: select * from collectionName

    Bu komut ismini verdiğiniz tablo içindeki tüm kayıtları döker. Hemen altında sql komutu karşılığından da  bunu anlayabilirsiniz. Eğer tablonuzda çok kayıt varsa bu komutu bu şekilde çalıştırmak biraz sıkıntı olabilir. Sonuna limit komutu ekleyerek daha az sayıda veriye göz atabilirsiniz. Skip komutu ile beraber kullanarak sayfalama yapısı da kullanabilirsiniz. Personel adında bir collection olduğunu farz ederek örneklerimi biraz daha somut hale getireyim. 

db.personel.find({}).limit(100) //sadece ilk 100 kaydı getirecektir
Sql : select top 100 * from personel -- veya select * from personel limit 100

db.personel.find({}).skip(200).limit(100) // ilk 200 kaydı atlayacak sonraki 100 kaydı getirecektir.
sql: select * from personel limit 100 offset 200

    Sorgumuza birde where koşulu eklememiz gerekirse find içinde tanımlayabiliriz.

db.personel.find({_id:"564"})  //564 id'li personeli getir.
sql: select * from personel where id = '564'

db.personel.find({maas:{$gte:3000}}) //maaşı 3000 ve üzeri olan personelleri getir.
sql: select * from personel where maas>=3000

db.personel.find({maas:{$lt : 3000}}) //maaşı 3000 den az personelleri getir.
sql: select * from personel where maas<3000

db.personel.find({
    dogumtarihi: {$gte:new Date("1980-01-01"), $lte:new Date("2000-01-01)}
})
//1980 den sonra 2000 den önce doğan personelleri getir.
sql: select * from personel where dogumtarihi between '1980-01-01' and '200-01-01'

db.personel.find({ad:"fatih" , soyad:"abc"}) //adı fatih, soyadı abc olan personelleri getir
db.personel.find({$and : [{ad:"fatih"} ,{ soyad:"abc"}] }) //adı fatih, soyadı abc olan personelleri getir
not: iki kullanımda and operatörü yerine geçer ve aynı sonucu döndürür.
sql: select * from personel where ad = 'fatih' and soyad = 'abc'

db.personel.find({$or: [{ad:"fatih"} ,{ ad:"ali"}] })//adı fatih veya ali olan personelleri getir
sql: select * from personel where ad = 'fatih' or ad = 'ali'

    Bu şekilde çekeceğiniz sorgu ya göre sql sorgularında where bölümüne koşul eklediğini gibi mongo içinde find içine istediğiniz kadar koşul ekleyebiliyorsunuz. 


    MongoDB Silme (DeleteOne, DeleteMany) komutu

    Mongoda silme yani delete işlemi aynı find komutu gibi yapılır. Find komutunda sorgunuzun sonucunda değerler size listelenir ama delete komutunda koşula uyan değerleriniz veri tabanından silinir. İki tane delete komutu vardır. 

  • DeleteOne : Koşulunuza uyan belgelerden ilki silinir.
  • DeleteMany: Koşulunuza uyan tüm belgeler silinir.
Örnek kullanım şu şekildedir. 
db.personel.deleteone({_id:"564"}) // 564 idli personel silinir.
sql:delete from personel where id = '564' //sql de bu komut deletemany gibi çalışır.

db.personel.deletemany({ad:"fatih"}) //fatih ismindeki tüm personeller silinir.
sql: delete from personel where ad = 'fatih' 

    Bu şekilde find içinde kullandığınız tüm şekillerde karmaşık koşullar ekleyerek istediğiniz kaydı silebilirsiniz.



Hiç yorum yok:

Yorum Gönder