31 Mayıs 2013 Cuma

MongoDB - Update İşlemleri



update() yöntemi, MongoDB belgelerini değiştirmek için kullanılan birincil yöntemdir. Güncelleme collection da sorgu kriterlere uyan tüm belgeleri güncelleyebilirsiniz.

Kullanımı ise şöyledir:

db.collection.update( <query>, <update>, <options> )

<query> : Sorgu, sql de wWHERE deyimine karşılık gelir. 

<update> : Değişitirilecek kayıtlar, sql de SET deyimine karşılık gelir.


$set ifadesi 

Bir kaydın değerinin güncellenmesi için kullanılır. 

Örnek

> db.example.update (
    { _id : 4 },
    {  $set:
        {
            'age' : 23
        }
    }
)


Update işlemi, belgeye yeni alanlar eklemenizi de sağlar. Yani update işleminde hem istenilen alan güncellenir hem de belgeye yeni alanlar da ekleyebilirsiniz.

Örnek: 

> db.example.update (
    { _id : 4 },
    {  $set:
        {
            'country' : 'Turkey',
            'age' : 25
        }
    }
)


$unset ifadesi 

update(), $unset operatörünü içeriyorsa belgeden alanı kaldırır. Yani bir alanı kaldırmak istiyorsak $unset ifadesini kullanabiliriz. 

Örnek: 

> db.example.update(
    { _id : 4 },
    {  $unset:
        {
            'country' : 'Turkey'
        }
    }
)


Konum belirterek element güncelleme

Güncelleştirme işlemi bir dizi alanında bir elemanın güncelleştirilmesi gerekiyorsa , elemanın konumu kullanılarak güncelleme yapılabilir.

Örnek olarak şöyle bir belge ekleyelim: 

> db.ex.insert (
    {
        _id :1,
        name : { first: 'Aaa', last: 'AAA'},
        age: 23,
        tags : ['JAVA', 'HTML', ' JQUERY', 'CSS'],
        awards: [
            {
                "award" : "Onur Belgesi",
                "year" : 2004,
                "by" : "Lise 2"
            },
            {
                "award" : "Okul Birinciligi",
                "year" : 2006,
                "by" : "Lise 4"
            },
            {
                "award" : "Mezuniyet Derecesi",
                "year" : 2010,
                "by" : "Universite"
            }
        ]
      
    }
)


Şimdi ise tags'daki 'HTML' olan veriyi pozisyon yonetimi ile 'HTML5' olarak güncelleyeceğim. 

> db.ex.update(
    { _id : 1},
    {
    $set :
        {
            'tags.1': 'HTML5'
        }
    }
)

Programlama dilinde arraylarda index 0 dan başladığı için, üstteki örnekte "tags.1" deki 1 index i, "HTML" verisini işaret etmektedir.


Konumu bilinmeyen elementin güncellenmesi 

Eger konumu bilinmiyorsa, pozisyon operatörü ($) kullanılarak güncelleme yapılabilir.  Alanın güncellenmesi için, güncellenecek eleman değerinin sorgu alanında olması gerekiyor.

Örnek

> db.ex.update(
    {
        _id : 1,
        'tags': 'CSS'
    },
    {
    $set :
        {
            'tags.$': 'CSS3'
        }
    }
)



Konumu bilinmeyip aynı hizada olan elementin güncellenmesi

eger güncellenecek bir array içindeyse ve konumu bilinmiyorsa; güncellenecek alan sorguda eklenir, güncellenecek kısmı da belgenin alt alanı ( "awards.$.by" gibi ) yazılarak yeni değer eklenir.

Örnek

> db.ex.update(
    {
        _id : 1,
        'awards.by': 'Lise 4'     // Eski değer
    },
    {
    $set :
        {
            'awards.$.by': 'Lise 3'    // Yeni değer
        }
    }
)

Çoklu döküman güncelleme

update() operatörünün multi özelliği true ya da 1, sorgu sonucunda eşleşen tüm belgeler güncellenir. 

Örnek

db.bios.update(
   { 'awards.award': 'Turing' },
   { $set: { turing: true } },
   { multi: true }
)


Hiç yorum yok:

Yorum Gönder