Codeigniter MongoDB Kütüphanesi

Codeigniter MongoDB Kütüphanesi Codeigniter ile MongoDB veritabanı sistemini kullanabilmek için yazdığım kütüphaneyi inceliyoruz.

Codeigniter ve MongoDB başlıklı bir önceki yazımda mevcut kütüphaneleri kullanmak yerine küçük bir kütüphane yazdığımı söylemiştim. PHP MongoDB eklentisini genişleterek yazdığım kütüphane sadece veritabanı bağlantısını yaparak Codeigniter tarzında ($this->library->method gibi ) kodlama yapmamızı sağlıyor. Ayrıca ekleme/düzenleme/silme işlemlerinde MongoDB'nin verdiğimiz komutu işlediğinden emin olmak için kullanabileceğimiz safe parametresini her sorguda tekrar etmemek için bu parametreyi kullanan Mongo metodlarını da genişlettim.

Kullanımı

mongo.php dosyasında gerekli bilgileri girdikten sonra normal şekilde kütüphaneyi yüklüyoruz.

$this->load->library('mongo_db');

MongoDB'de Mysql'den alışageldiğimiz tablolar yerine koleksiyon denilen döküman toplulukları yer alıyor. Kütüphaneyi yükledikten sonra işlem yapmak istediğimiz dökümanı aşağıdaki gibi seçip istediğimiz komutu çalıştırıyoruz.

$this->mongo_db->koleksiyon_adi->metod($parametreler);

Burada koleksiyon_adi ile işlem yapacağımız koleksiyonu seçip metod() işlemini uyguluyoruz. Buradaki metod MongoCollection sınıfındaki herhangi bir metod olabilir. Gerçek örneklerle açıklarsak daha kolay olur sanırım. Diyelim ki kullanıcıları kaydedeceğiniz users isimli bir koleksiyonunuz var.

Yeni kayıt ekleme:

$data = array('username'=>'mustafa','email'=>'x@y.com');
$this->db->users->insert($data);

Mevcut bir kaydı düzenleme:

$where = array('username'=>'mustafa');
$data =array('$set' => array('email' => 'a@b.com'));
$this->db->users->update($where,$data);

Kaydı silme:

$where = array('username' => 'mustafa');
$this->db->users->remove($where);

Bir kayıt çekme:

$where = array('username' => 'mustafa');
$this->db->users->findOne($where);

Tüm kayıtları çekme:

$this->db->users->find();

MongoDB'ye biraz gözattıysanız mantığını anlamışsınızdır sanırım, örnekleri bu şekilde çoğaltıp gidebiliriz. $data dizisine istediğiniz kadar ve istediğiniz derinlikte veri yazabilirsiniz. $where değişkeninde durum biraz daha farklı. Bu konuda php.net'teki örneklere göz atabilirsiniz. (Belki bir başka yazıda bu konuyu ele alabiliriz.) Koleksiyonları kullanmaya başlamak için önceden koleksiyonu oluşturmak gibi bir gereksinimimiz yok. İlk insert komutundan sonra MongoDB bizim için verdiğimiz isimde bir koleksiyon oluşturuyor.

Kütüphaneyi bitbucket üzerinde açtığım Codeigniter MongoDB Library deposundan indirebilirsiniz. Kütüphane hakkında görüş ve önerilerinizi esirgemezseniz sevinirim smile

Bu yazı en son 03 Aralık 2011 tarihinde düzenlenmiştir ve güncelliğini yitirmiş olabilir.

  • Fatih Bazman

    libraries/mongo.php dosyasının ilk satırında "if" konutu eksik. 11. satırda get_instance dan önce ampersant kullanmayı unutmuşsun. Bir de PHP +5.3 desen iyi olur sanırım. 

    Onun dışında çok iyi bir fikir olmuş. MongoDB ye geçiş döneminde eski alışkanlıkları terk etmek zor olabilir.

    Eline sağlık.

  • Mustafa Navruz

    Eklemeyi unutmuşum onu. Ampersandı bilerek koymadım. PHP 5 ile nesneler zaten referans olarak atandığından eklemeye gerek yok. Yanlış biliyorsam düzeltin.

    Neden PHP 5.3+ desek iyi olur onu da anlayamadım. Denemedim ama 5.2 ile de çalışması gerekiyor kütüphanenin.

    Teşekkürler.

  • Fatih Bazman

    Doğrusun. PHP 5+ demek daha doğru olur sanırım. Bu kütüphaneyi daha da genişletmeyi düşünmelisin bence.

    Kolay gelsin.

  • Mustafa Navruz

    MongoDB'yi öğrendikçe zamanla güncelleriz hocam. Fikirlerin için teşekkürler.

  • Berkant Aydin

    cmd ve upsert gibi kütüphanede önceden tanımlanmamış komutlara nasıl erişebiliriz? İlla ki tanımlamak mı gerekiyor?

  • Mustafa Navruz

    Kütüphanenin şu anli haliyle command metodunu kullanamazsınız. Bildiğim kadarıyla zaten upsert diye bir komut yok Php kütüphanesinde. insert metoduna parametre göndermek yoluyla upsert yapabiliyorsunuz.

    $this->mongo_db->metod şeklinde kullanarak Mongo sınıfının metodlarını,
    $this->mongo_db->koleksiyon_adi->metod şeklinde de MongoCollection sınıfının metodlarını kullanabilirsiniz.

    Yorumunuzdan yola çıkarak MongoDB sınıfının metodlarını kullanabileceğiniz hale önümüzdeki günlerde getireceğim.

  • phpuzman

    arkdaşım sen 10 numrasın süperrr

blog comments powered by Disqus

© Mustafa Navruz 2011 0.0176 sn.

^ Başa Dön