Herkese merhaba,
Daha önceki iki makalemizde MongoDB kurmanın yollarından bahsetmiştim sizlere.
MongoDB nedir ve Kurulum için aşağıdaki konulara bakabilirsiniz öncelikle:
NoSql ve MongoDB Nedir? MongoDB Kurulumu
Homebrew nedir? Homebrew Kurulumu ve Homebrew ile mongo db kurulumu
Şimdi ise işin biraz daha teknik kısmına girecek, php ile mongo bağlantısını kurup bir kaç küçük örnek ile kafanızdaki sorulara yanıt vermeye çalışacağım..
MongoDB erişim için GUI isterseniz MongoHub veya MongoVUE kullanabilirsiniz.
Ben collectionımı oluşturma ve datalarımı ekleme işlemini GUI ile yaptım ancak ilk fırsatımda kod ile de ekleme güncelleme , silme işlemlerine burada bahsedeceğim.. Şimdilik okuma ve filtreleme işlemlerine ele alalım.
Sırası ile işlemleri parçalayarak anlatacağım size;
MongoDB Bağlanmak
try { // Mongo Sunucusuna bağlanalım $mongo = new Mongo('mongodb://127.0.0.1:27017'); /* Eğer Mongo sunucunuzda kimlik doğrulama özelliği aktifse bağlantı satırını aşağıdaki şekilde düzenleyebilirsiniz. $mongo = new Mongo('mongodb://onur:12345@127.0.0.1:27017'); */ // Veritabanını Seçelim $db = $mongo->selectDB('mongOnur'); } catch(MongoConnectionException $e) { die('Baglanti Hatası : ' . $e->getMessage()); }
Burada görüldüğü gibi 27017 mongo default portudur direk erişim sağlayabiliriz ancak kodda da belirttiğim gibi kimlik doğrulaması aktif ise kullanıcı adı ve şifre ile bağlanmanız gerekecektir. Benim Db ismim mongOnur idi..
MongoDb ye data girişi yapalım (INSERT)
<?php // futbolcular İsimli Collection'ı Seçelim $futbolcularColl = new MongoCollection($db, 'futbolcular'); if(!empty($_POST)){ $futbolcular = $futbolcularColl->find(); $futbolcular_adet = $futbolcular->count(); $id = $futbolcular_adet + 1; $adsoyad = $_POST['adsoyad']; $numara = $_POST['numara']; $adaminDibi = array('_id'=>$id, 'adsoyad'=>$adsoyad, 'numara'=>$numara); $futbolcular->insert($adaminDibi); echo $adsoyad . ' kaydedildi..'; } ?>
MongoDb ile kayıtları okumak
Kaydetme işlemini yaptığımıza göre bir de okuma işlemine bakalım..
// futbolcular İsimli Collection'ı Seçelim $futbolcular = new MongoCollection($db, 'futbolcular'); // Toplam Futbolcu Sayısı echo '<p>Toplam Futbolcu : </p>' . $futbolcular->count(); // Tüm futbolcuları cekelim. $futbolcuListesi = $futbolcular->find(); // Çektiğimiz kayıtları listeleyelim. foreach($futbolcuListesi as $futbolcu) { echo $futbolcu['numara'].' Numara, '.$futbolcu['adsoyad'].' <br>'; }
Burada collection nedir diye soranlara en basit hali ile MongoDB deki collection lar sizin alıştığınız mysql deki tablo gibi diyerek yanıt verebilirim..
Direk olarak find() komutunu kullanarak tüm kayıtları çektirdik ama ya filtreleme yapacak olsaydık durum nasıl olurdu?
$whereClause = array('adsoyad' => 'Drogba'); $futbolcuListesi = $futbolcular->find($whereClause)->limit(10); foreach($futbolcuListesi as $futbolcu) { echo $futbolcu['numara'].' Numara, '.$futbolcu['adsoyad'].' <br>'; }
Burada hem filtreleme, hem listemizde limit kullandık.
Peki aradan bir kayıt seçecek olsaydık? Mesela mysql deki LIMIT 10,20 desem anlatımı daha kolay olacak herhalde.
$futbolcuListesi = $futbolcular->find()->skip(1)->limit(10); foreach($futbolcuListesi as $futbolcu) { echo $futbolcu['numara'].' Numara, '.$futbolcu['adsoyad'].' <br>'; }
Sıralama eklemek istiyorsanız datalarınıza aşağıdaki gibi sıralama tipini belirleyip kriter olarak eklemelisiniz.
$orderBy = array('numara' => 1); // (1 : ASC , -1 : DESC) ->sort($orderBy)
Güncelleme
Diyelim ki formumuzu edit şeklinde açtık. Gelen dataları ekrana bastık ve tekrar güncelleme işleminde post ettirdik.. İşte işin güncelleme kısmı..
<?php if(!empty($_POST)){ $id = $_POST['id']; $adsoyad = $_POST['adsoyad']; $numara = $_POST['numara']; $query = array('_id'=>$id); $futbolcu = $futbolcularColl->findOne($query); $futbolcu['adsoyad'] = $adsoyad; $futbolcu['numara'] = $numara; $futbolcularColl->save($futbolcu); echo 'Güncelleme İşlemi Başarılı!'; } ?>
Silme işlemi
En basit yoldan tıkladık geldik. Elimizde silinecek kişinin id veya numarası var diyelim.
<?php if(!empty($_GET)){ $numara = $_GET['numara']; $futbolcularColl->remove(array('numara' =>”$numara”)); echo 'Silme İşlemi Başarılı!'; } ?>
Umarım açıklayıcı olabilmişimdir. Geç saatte dökümanı tamamladığım için atladığım yerler veya hatalarım olabilir. Soru veya görüşleriniz için yorumlarınızı beklerim..
İyi çalışmalar dilerim..
$futbolcularColl = new MongoCollection($db, ‘futbolcular’);
Eline sağlık CRUD işlemlerinde yukarıda yazılı şekilde 1 sefer db nesnesi oluşturduysak aynı php belgesinde iç içe olması gerekli diye düşündüğümden ilave etmek istedim.