11 Nisan 2021 Pazar

MongoDB Collection InsertOne ve InsertMany

    Bu aralar MongoDB veri tabanı ile çok haşır neşir olduğum için biraz yazmak istedim. Bu konuda internette büyük ihtimal 300 bin tane yazı vardır ama bir tanede benden olsun. Aslında dizi haline getirmeyi düşündüğüm ve muhtemelen pek fazla kişinin okumayacağı bu yazıları en çok kendim için yazıyorum. Çünkü işime yaradığında sağdan soldan toplayıp birleştirip sorun çözdüğüm kodları unutuyorum. Sonradan lazım olunca yine aynı şekilde toplamak zorunda kalıyorum. Bu yüzden buraya yazarak lazım olunca yine kullanmayı planlıyorum.

    Mongo nedir, Nosql nedir, veri tabanı nedir paragrafları açıp uzun uzun anlatmaya gerek yok sanırım. Zaten NoSql camiasının lokomotiflerinden olan Mongo belge (doküman) bazlı bir veri tabanıdır. Yani tablo (collection) içine attığınız her her kayıt bir doküman olarak saklanır ve bu şekilde kullanılır. Bir id değeri ile işaretlenir.

    Mongodb'yi mongodb.com adresinden indirip kurabilirsiniz. Bağlanmak için ücretli ve ücretsiz çeşitli arayüz programları kullanabilirsiniz. ben mongodbmanager.com sitesinden indirdiğim nosql manager programını kullanıyorum. Ücretsiz ve ücretli versiyonu var. Ayrıca sdk paketleri ile neredeyse tüm programlama dillerinden bağlanarak kullanabiliyorsunuz. Arayüzler üzerinden veri ekleme ve basit listeleme ve güncelleme işlemlerini yapabiliyorsunuz. Bu kısmı anlatmaya gerek yok ben mongo sorguları ile yapılacak işlemleri anlatacağım. Belki arada C# dilinden linq kullanımı da anlatırım. 


    Collection Oluşturma ve Veri Ekleme 

    MongoDB'de sabit bir veri yapısı zorunlu olmadığı için collection oluşturmak için özel bir komut çalıştırmanıza gerek yoktur. Eğer bir collection ismi vererek bir kayıt eklerseniz eğer collection varsa kaydı içine ekleyecek yoksa yeni bir collection oluşturacak ve kaydı onun içine ekleyecektir. Kayıt ekleme kodu InsertOne veya InsertMany komutları kullanılır.  Mesela Personel adlı bir collection'a yeni bir kayıt eklemek için;

db.Personel.InsertOne({
    "Ad":"Fatih",
    "Soyad":"Abc",
    "DogumTarihi":ISODate("1900-10-01T00:00:00.000Z"),
     "Sicil":1234

})

Belgeleri json formatında olması gerekiyor.Json belgenize _id alanı ve değeri eklerseniz bu belgenizin id'si olacaktır. Eğer id değeri vermezseniz mongodb kendisine özel olan  ObjectId formatında bir değer oluşturacak ve belgeye ekleyecektir. koleksiyona aynı sorguda birden fazla değer eklemek için InsertMany aşağıdkai şekilde komutu kullanılabilir. 

db.Personel.InsertMany([{
    "Ad":"Fatih",
    "Soyad":"Abc",
    "DogumTarihi":ISODate("1900-10-01T00:00:00.000Z"),
     "Sicil":1234

},
{
    "Ad":"Ali",
    "Soyad":"Abc",
    "DogumTarihi":ISODate("1900-10-01T00:00:00.000Z"),
     "Sicil":1234,
    "Maas":1234.67
},
{
    "_id":"6072214beb7726f28265870d",
    "Ad":"Ayşe",
    "Soyad":"Abc",
    "DogumTarihi":ISODate("1900-10-01T00:00:00.000Z"),
     "Sicil":1234
}]
)

Mongodb NoSql sistemlerin doğası gereği şema bağımsızdır. yani aynı koleksiyonda olsa bile tüm belgeler farklı tipte ve isimde alanlara sahip olabilirler. Mesela örneğimizde ilk kayıtta 4 alan varken ikinci kayıtta 5 alan var. İçerdeki kayıtların nasıl olacağı tamamen sizin programlarınızdaki ihtiyacınızla sınırlı. İsterseniz normal veri tabanları gibi koleksiyon içindeki tüm kayıtları aynı formatta saklarsınız isterseniz her belge içinde farklı formatlar saklarsınız. Tabi veriler kullanırken içinden çıkabilecekseniz :) 

Koleksiyon içine atabileceğiniz veriler json formatındaki veri tipleri ve özel bir kaç tipi içeriyor. Özel tip olarak en çok kullanacağınız ObjectId, Date, UUID tipleridir. Ayrıca iç içe dökümanlar ve arraylar ile istediğiniz formatta veri saklayabilirsiniz. 

Hiç yorum yok:

Yorum Gönder