3 Aralık 2013 Salı

Javascript Browser Selector

Bu derste html tagına browser, işletim sistemi özelliklerinin classını yazdıracağız. Html tagına  browser ve işletim sistemi class ı ekleyerek tarayıcı farklılıklarını css ile önleyebiliriz.


var App: {
     detectBrowser: function() {
        function css_browser_selector(n) {
            var b = n.toLowerCase(),
                    f = function(c) {
                        return b.indexOf(c) > -1;
                    },
                    h = "gecko",
                    k = "webkit",
                    p = "safari",
                    j = "chrome",
                    d = "opera",
                    e = "mobile",
                    l = 0,
                    a = window.devicePixelRatio ? (window.devicePixelRatio + "").replace(".", "_") : "1";
            var i = [(!(/opera|webtv/.test(b)) && /msie\s(\d+)/.test(b) && (l = RegExp.$1 * 1)) ? ("ie ie" + l + ((l == 6 || l == 7) ? " ie67 ie678 ie6789" : (l == 8) ? " ie678 ie6789" : (l == 9) ? " ie6789 ie9m" : (l > 9) ? " ie9m" : "")) : (/trident\/\d+.*?;\s*rv:(\d+)\.(\d+)\)/.test(b) && (l = [RegExp.$1, RegExp.$2])) ? "ie ie" + l[0] + " ie" + l[0] + "_" + l[1] + " ie9m" : (/firefox\/(\d+)\.(\d+)/.test(b) && (re = RegExp)) ? h + " ff ff" + re.$1 + " ff" + re.$1 + "_" + re.$2 : f("gecko/") ? h : f(d) ? d + (/version\/(\d+)/.test(b) ? " " + d + RegExp.$1 : (/opera(\s|\/)(\d+)/.test(b) ? " " + d + RegExp.$2 : "")) : f("konqueror") ? "konqueror" : f("blackberry") ? e + " blackberry" : (f(j) || f("crios")) ? k + " " + j : f("iron") ? k + " iron" : !f("cpu os") && f("applewebkit/") ? k + " " + p : f("mozilla/") ? h : "", f("android") ? e + " android" : "", f("tablet") ? "tablet" : "", f("j2me") ? e + " j2me" : f("ipad; u; cpu os") ? e + " chrome android tablet" : f("ipad;u;cpu os") ? e + " chromedef android tablet" : f("iphone") ? e + " ios iphone" : f("ipod") ? e + " ios ipod" : f("ipad") ? e + " ios ipad tablet" : f("mac") ? "mac" : f("darwin") ? "mac" : f("webtv") ? "webtv" : f("win") ? "win" + (f("windows nt 6.0") ? " vista" : "") : f("freebsd") ? "freebsd" : (f("x11") || f("linux")) ? "linux" : "", (a != "1") ? " retina ratio" + a : "", "js portrait"].join(" ");
            if (window.jQuery && !window.jQuery.browser) {
                window.jQuery.browser = l ? {
                    msie: 1,
                    version: l
                } : {};
            }
            return i;
        }
        (function(j, b) {
            var c = css_browser_selector(navigator.userAgent);
            var g = j.documentElement;
            g.className += " " + c;
            var a = c.replace(/^\s*|\s*$/g, "").split(/ +/);
            b.CSSBS = 1;
            for (var f = 0; f < a.length; f++) {
                b["CSSBS_" + a[f]] = 1;
            }
            var e = function(d) {
                return j.documentElement[d] || j.body[d];
            };
            if (b.jQuery) {
                (function(q) {
                    var h = "portrait",
                            k = "landscape";
                    var i = "smartnarrow",
                            u = "smartwide",
                            x = "tabletnarrow",
                            r = "tabletwide",
                            w = i + " " + u + " " + x + " " + r + " pc";
                    var v = q(g);
                    var s = 0,
                            o = 0;
                    function d() {
                        if (s != 0) {
                            return;
                        }
                        try {
                            var l = e("clientWidth"),
                                    p = e("clientHeight");
                            if (l > p) {
                                v.removeClass(h).addClass(k);
                            } else {
                                v.removeClass(k).addClass(h);
                            }
                            if (l == o) {
                                return;
                            }
                            o = l;
                        } catch (m) {
                        }
                        s = setTimeout(n, 100);
                    }
                    function n() {
                        try {
                            v.removeClass(w);
                            v.addClass((o <= 360) ? i : (o <= 640) ? u : (o <= 768) ? x : (o <= 1024) ? r : "pc");
                        } catch (l) {
                        }
                        s = 0;
                    }
                    if (b.CSSBS_ie) {
                        setInterval(d, 1000);
                    } else {
                        q(b).on("resize orientationchange", d).trigger("resize");
                    }
                })(b.jQuery);
            }
        })(document, window);

    }
};

App.detectBrowser();

19 Haziran 2013 Çarşamba

MongoDB de PHP ile Kayıt Listeleme

merhaba. Önceki derste mongolab a kayıt ekleme işlemi yapmıştık.

Şimdi ise tüm kayıtları listeleyeceğiz.


Liste fonksiyonu:

function listItem($collection) {
       $cursor = $collection->find();
       return $cursor;
 }



list.php sayfası:

if($_REQUEST) {
   
    include "db.php";
   
    $db = new DB();
    $collection = $db->connectDB();
    $array = $db->listItem($collection);
   
    foreach ($array as $k => $v) {
      if(is_array($v)) {
        foreach ($v as $key => $val) {
            if(is_array($val)) {
                echo $key."<br />";
                foreach ($val as $kk => $vv) {
                    echo "&emsp;".$kk. ' : '. $vv.'<br />';
                }
            } else
          echo $key. ' : '. $val.'<br />';   
        }
      }
      else echo ' - - - - '. $k. ' - '. $v;
      echo "<br /><br />";
    }   
}



ve html sayfası:

<form action="list.php" method="post">
     <input type="submit" name="listele" value="Kayıtları Listele" />
</form>



4 Haziran 2013 Salı

MongoDB de PHP ile Kayıt Ekleme

Bir önce dersimizde mongolab.com dan bahsetmiştik ve veritabanı oluşturmuştuk.

Bu dersimizde ise PHP ile Mongolab.com da oluşturduğumuz MongoDB veritabanına  veri kaydedeceğiz.

Sayfaları oluşturmaya başlayabiliriz.

db.php sayfamız:

<?php

    class DB {
       
        private $dbusername =""; // Veritabanı kullanıcı adı
        private $dbpass = "";   // Veritabanı şifresi
        private $dbname = "";  // Veritabanı adı
        private $dbcollection= "";  // Collection adı
       
        function connectDB() {
            $url = "mongodb://".$this->dbusername.":".$this->dbpass."@ds027348.mongolab.com:27348/".$this->dbname;
            //echo $url;
            try {
                $conn = new Mongo($url);
                $dbbname = $conn->selectDB($this->dbname);
                $collection = $dbbname->selectCollection($this->dbcollection);
               
                return $collection;
            } catch(MongoConnectionException $e) {
                die ("Baglanti kurulamadi".$e->getMessage());
            }
        }
        

    // Ekleme Fonksiyonu
        function addItem(array $arr, $collection) {
            $result = $collection->insert($arr);
           
            if($result) {
                echo "Eklendi";
            } else {
                echo "bir sorun olustu";
            }
        }
    }
?>




Şimdi de form sayfasını hazırlayalım.

<form action="insert.php" method="post">
                   
                    <table>
                        <tr>
                            <td>Ad</td>
                            <td>:</td>
                            <td><input type="text" name="ad" /></td>
                        </tr>
                        <tr>
                            <td>Soyad</td>
                            <td>:</td>
                            <td><input type="text" name="soyad" /></td>
                        </tr>
                        <tr>
                            <td>Doğum Tarihi</td>
                            <td>:</td>
                            <td><input type="text" name="dogum_tarihi" /></td>
                        </tr>
                        <tr>
                            <td>Cinsiyet</td>
                            <td>:</td>
                            <td>
                                <input type="radio" name="cinsiyet" value="E" /> Erkek
                                <input type="radio" name="cinsiyet" value="K" /> Kadın
                                <input type="radio" name="cinsiyet" value="EC" /> Eşcinsel
                            </td>
                        </tr>
                        <tr>
                            <td>Ülke</td>
                            <td>:</td>
                            <td>
                                <select name="ulke">
                                    <option value="TR">Türkiye</option>
                                    <option value="DE">Almanya</option>
                                    <option value="FR">Fransa</option>
                                    <option value="CA">Kanada</option>
                                </select>
                            </td>
                        </tr>
                        <tr>
                            <td>Hobiler</td>
                            <td>:</td>
                            <td>
                                <input type="checkbox" name="hobi[]" value="Yüzmek" /> Yüzmek
                                <input type="checkbox" name="hobi[]" value="Kitap okumak" /> Kitap Okumak
                                <input type="checkbox" name="hobi[]" value="Dans Etmek" /> Dans Etmek
                                <input type="checkbox" name="hobi[]" value="Gitar Çalmak" /> Gitar Çalmak
                            </td>
                        </tr>
                        <tr>
                            <td></td>
                            <td></td>
                            <td>
                                <input type="submit" name="kaydet" value="Kaydet" />
                            </td>
                        </tr>
                    </table>
                   
                </form>




ve insert.php sayfamız:

$ad= $_POST['ad'];
    $soyad= $_POST['soyad'];
    $dogum_tarihi= $_POST['dogum_tarihi'];
    $cinsiyet= $_POST['cinsiyet'];
    $ulke= $_POST['ulke'];
    $hobi = implode(",", $_POST['hobi']);
   
    $document = array ("names:" => array ( "first" => $ad, "soyad" => $soyad), "dogum_tarihi" => $dogum_tarihi, "cinsiyet" => $cinsiyet, "ulke" => $ulke, "hobi" => $hobi );

    include "db.php";
   
    $db = new DB();
   
    $collection = $db->connectDB();
      
    $db->addItem($document, $collection);












MongoLab Kullanımı

MongoLab, MongoDB veritabanı, otomatik yedekleme, web tabanlı araçları, 7/24 izleme, uzman desteği içeren ve tam yönetilen bulut veritabanı hizmetidir. Heroku kullanıcılar ürün geliştirme yerine faaliyetleri üzerinde dikkatini çekmek için ücretsizdir. 500 mb ücretsiz bir alan sağlamaktadır. Heroku kullanıcılar uygulamalarını bu alanda test edebilirler.


MongoDB Veritabanı Oluşturma

MongoLab kullanıcı oluşturup giriş yaptığınızda veritabanı eklemek için bir pencere geliyor. Buradan "Create New" i tıklıyoruz.







Gelen pencereden veritabanı ismi, barındırılacak yeri (ben amazon u seçtim. Diğerleri ücretsiz mi hiç denemedim.), paketlerden ücretsiz olanı (sandbox u) seçiyoruz.






Bunları seçtikten sonra veritabanı yetkisi için kullanıcı adı ve şifre kısımları oluyor. Onları da yazıyoruz ve "Create Database" butonuna basıldığında ücretsiz veritabanımız oluşturulmuş oluyor.








Veritabanımıza tıkladığımızda, veritabanı ile ilgili collection, kullanıcılar, durum, yedekleme, araçlar ve dış kaynaklardan bağlanmak için bağlantı adresleri çıkıyor.





Veritabanına dışarıdan bağlanmak için konsol ve url olmak üzere 2 farklı şekil var. Siz her ikisini de kullanabilirsiniz.


Yeni collection eklemek için "Add" butonuna tıklayınız.

Açılan popup dan adını yazıyorsunuz. Dilerseniz dosya boyutu da verebilirsiniz. Default 8 kb dır.



3 Haziran 2013 Pazartesi

XAMPP PHP ye MongoDB kurulumu


https://github.com/mongodb/mongo-php-driver/downloads

Buradan güncel sürümünü indiriniz. Ben php_mongo-1.3.2RC1.zip sürümünü indirmiştim.

İndirdiğiniz zip i açın ve  php_mongo-1.3.2RC1-5.4-vc9.dll dosyasını c:/xampp/php/ext  içine kopyalayın.

php.ini dosyasını açıp  extension=php_mongo-1.3.2RC1-5.4-vc9.dll satırını ekleyin.

Daha sonra apache servisini yeniden başlatın.

Localhostu çalıştırıp phpinfo() yu açtığınızda görünmesi gerekiyor.






Eğer görünmüyorsa farklı bir dll dosyası deneyiniz. Ben windows 7 64bit sürümünde denemiştim.

Test etmek için de;

- mongodb yi başlatın. 

- php dosyanızı şu şekilde ayarlayın.

<?php
   
    $connection = new Mongo();
   
    if($connection) {
        echo "baglandi";
    } else {
        echo "baglanilamadi!";
    }
   
?>



MongoDB - Delete İşlemleri

Delete() işleminin söz dilimi şu şekildedir.

db.collection.remove( <query>, <justOne> )

justOne: Argüman bool değer alır ve LIMIT 1 ile aynı etkiye sahiptir.


remove() metodunda  sorguda eşleşen tüm belgeleri siler.

Örnek: 

db.example.remove(
    {
        _id:1
    }
)



Eğer <justOne> değeri belirtirseniz, eşleşen koleksiyonda sadece bir kaydı siler.

Örnek: 

db.example.remove(
    {
        age:24
    },
    1
)



Eğer remove() metodunda <query> kullanmazsanız dökümanı siler.

Örnek: 

 db.example.remove()   // example dökümanı siliniyor..








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 }
)


30 Mayıs 2013 Perşembe

MongoDB - Koşullu Operatörler


MongoDB ile ilgili koşullu operatörler şunlardır:

(>) Daha büyük - $gt

(<) Daha küçük - $lt

(> =) Büyük eşit - $gte

(<=) Küçük eşit - $lte

(<>) Eşit Değil - $ne


MongoDB $gt 

Karşılaştırılan değerden büyük değerdeki verileri döndürür.

Kullanımı: 

db.testtable.find(
   {
      age: {
          $gt: 23
      }
   }
)


SQL Kullanımı: 

select * from testtable where age > 23;


MongoDB $lt

Karşılaştırılan değerden küçük değerdeki verileri döndürür. 

Kullanımı:

db.testtable.find(
   {
      age: {
          $lt: 23
      }
   }
)


SQL Kullanımı: 

select * from testtable where age < 23;  


MongoDB $gte

Karşılaştırılan değere eşit ve daha büyük değerdeki verileri döndürür.

Kullanımı: 

db.testtable.find(
   {
      age: {
          $gte: 23
      }
   }
)


SQL Kullanımı:

select * from testtable where age >= 23;


MongoDB $lte

Karşılaştırılan değere eşit ve daha küçük değerdeki verileri döndürür.

Kullanımı: 

db.testtable.find(
   {
      age: {
          $lte: 23
      }
   }
)


SQL Kullanımı:

select * from testtable where age <= 23;



MongoDB $ne

Karşılaştırılan değere eşit olmayan verileri döndürür.

Kullanımı: 

db.testtable.find(
   {
      age: {
          $ne: 23
      }
   }
)


SQL Kullanımı:

select * from testtable where age <> 23;


Kaynaklar:
http://www.w3resource.com/mongodb/mongodb-conditional-operators.php




(>) greater than - $gt
(<) less than - $lt
(>=) greater than equal to - $gte
(<= ) less than equal to - $lte
- See more at: http://www.w3resource.com/mongodb/mongodb-conditional-operators.php#sthash.IL3adk7s.dpuf
(>) greater than - $gt
(<) less than - $lt
(>=) greater than equal to - $gte
(<= ) less than equal to - $lte
- See more at: http://www.w3resource.com/mongodb/mongodb-conditional-operators.php#sthash.IL3adk7s.dpuf

MongoDB - Read İşlemleri

Aşağıdaki yöntemlerden birini kullanarak belgeleri okuyabilir, sorgu yapabilirsiniz:

  • find()
  • findOne()

find()

 Bu metod, koleksiyon belgelerini seçmek için birinci yöntemdir. Sözdilimi ise şöyledir:

db.[tablo adı].find(<query>,projection)

- query, sqldeki where gibi, sorgularımızdır. 
- projection, değerleri sonuç kümesinden seçmek için alanların listesine karşılık gelir. 



Örneğin tablo adımız user olsun.

db.user.find() ile user içindeki tüm alanlar listelenir. 

Belge içindeki "_id" alanı 3 olanları listelemek istiyorsak;

> db.user.find(
   {
      _id: 3
   }
)

 

OR (veya) kullanımı

> db.user.find(
   {
      _id: { 

               $in : [ 3, 5 ]
            }
   }
)


"$in" imleci ile koşullardan herhangi birinin geçerli olması durumu için kullanılır. Yani sqldeki or gibi düşünebilirsiniz.  Üstteki örnekte _id değeri 3 ya da 5 olanlar listenecektir.



Between Kullanımı 

 db.collection.find( { field: { $gt: value1, $lt: value2 } } );

- collection: Belge (sqldeki tablo ) adı
- field:  Değişkendir. Örneğin _id, name, age gibi
- $gt: Değerin taban (düşük) değişken adını ifade eder. İsmi sabittir.
- $lt: Değerin tavan (büyük) değişken adını ifade eder. İsmi sabittir.
- value1, value2: taban ve tavan değerlerimiz.

Örnek uygulama:

> db.user.find (
   {
      _id : {
               $gt : 2,
               $lt : 5
            }
   }
)


Üstteki örnekte _id değeri 2 ile 5 arasındaki değerler yani 2 ve 3 listenecektir.


Array ile birden fazla alan sorgulama

Aşağıdaki gibi bir kayıt ekleyelim.

> db.bios.insert ({
  "_id" : 1,
  "name" : {
             "first" : "John",
             "last" :"Backus"
           },
  "birth" : ISODate("1924-12-03T05:00:00Z"),
  "death" : ISODate("2007-03-17T04:00:00Z"),
  "contribs" : [ "Fortran", "ALGOL", "Backus-Naur Form", "FP" ],
  "awards" : [
              {
                "award" : "W.W. McDowellAward",
                "year" : 1967,
                "by" : "IEEE Computer Society"
              },
              {
                "award" : "National Medal of Science",
                "year" : 1975,
                "by" : "National Science Foundation"
              },
              {
                "award" : "Turing Award",
                "year" : 1977,
                "by" : "ACM"
              },
              {
                "award" : "Draper Prize",
                "year" : 1993,
                "by" : "National Academy of Engineering"
              }
  ]
})



Örneğin şu şekilde bir arama yaptırabiliriz.


> db.bios.find(
   {
      awards: {
                $elemMatch: {
                     award: 'Turing Award',
                     year: { $gt: 1980 }
                }
      }
   }
)


Buradaki sorguda awards arrayındaki award alanı "Turing Award" ve year alanı 1980 den düşük kayıtlar listenecektir.

Alt Dökümanlar

Sorgulanacak belgenin alanları aynı olmalıdır. Örneği aşağıdaki gibi kayıtlar ekleyelim.

> db.bios.insert(
    {
      name: {
              first: 'Yukihiro',
             aka: 'Matz',
             last: 'Matsumoto'
            }
    }
)

> db.bios.insert(
    {
      name: {
              first: 'Matsumo',
             last: 'Agileto'
            }
    }
)


Aşağıdaki gibi alt döküman sorgusu yapabiliriz.

> db.bios.find(
   {
     'name.first': 'Yukihiro'
   }
)


Burada name alanının altındaki first alanına göre sorgu yapıyoruz. Yani ismi "Yukihiro" olanları listeliyor.



Mantıksal Operatörler

OR operatörü

Kullanımı:

> db.bios.find(
   { $or: [
            { 'name.first' : /^G/ },
            { birth: { $lt: new Date('01/01/1945') } }
          ]
   }
)

Buarada name alanı altındaki first alanının G ile başlayanları ya da 01/01/1945 den büyük olanları listelemektedir.


AND Operatörü 

Kullanımı:

> db.bios.find(
   {
      'name.first': /^K/,
      contribs: 'UNIX'
   }
)
 
first alanının K ile başlaması ve constribs listesinde "UNIX" kaydının bulunması durumunda kayıtları geri döndürür.
 
 

Sonucun Değişkene Aktarılması

var C = db.example.find({_id:1})
 
Burada C değişkeni array özelliğinde olur. Bulunan değerleri görüntülemek için aşağıdaki yolları kullanabilirsiniz:
 
 
1. İndex Değeri
 
Tek bir kayıt görüntülemek için kullanılır. Kullanımı şu şekildedir.
 
DegiskenAdi[index]

Örnek uygulama: 

> C[2] 
 

2. next() Metodu
 
Belirtilen değerden bir sonrakini bulmak için kullanılır. 

Örnek uygulama:

> var document = C.hasNext() ? C.next() : null;
> if(document) {
    var name = document.name;
    print (tojson(name));
}
  

3. forEach() Metodu 
 
Bulunan değerlerin tamamını listeler. 

Örnek uygulama:

> var c = db.example.find(
   {
     _id: {
              $gt:1,
              $lt:6
          }
   }
 )
> c.forEach(printjson)



sort()

Sonuçları sıralamak için sort() idafesi kullanılır.  
 
Kullanımı:

> db.example.find().sort({ name : 1 }); // Normal yani küçükten büyüğe
> db.example.find().sort({ name : -1 }); // Ters yani büyükten küçüğe sıralama
 
 

Limit()

Sorgu sonucudan ilk 50, son 20 kayıt diye bir limit koyabiliriz. Bunu da mongodb de limit() ifadesiyle yapılıyor.
 
Kullanımı 
 
> db.example.find().limit(5) // 5 kaydı göster 
 
 

skip()

Sorgu sonucunda belirli kayıtları göstermemek ya da belirli kayıtları atlayıp, diğer kayıtları görüntülemek isteyebiliriz. Bu işlem de skip() ile yapılıyor.

kullanımı

> db.example.find().skip(3) // sorgu sonucunda ilk 3 kayıt atlanarak diğer kayıtlar listelenir.



findOne()

findOne() tek bir belgeyi (kaydı) seçer. Sorgu sonucunda da bir değişken (imleç)  dönüştürmez.

Kullanımı

db.collection.findOne( <query>, <projection> )


Örnek uygulama

>  db.example.findOne(
     {
             _id: 1
     }
  )


MongoDB - Insert İşlemleri

insert() deyimi, MongoDB  belgesine kayıt eklemek için kullanılır.

db.collection.insert( <document> )

"_id" değeri belgenin anahtar kelimesidir ve benzersiz olmalıdır. Eğer kullanıcı tarafından eklenmediğinde mongodb kendisi ObjectId içerisinde eşsiz olarak ekleyecektir.

Örnek insert kullanımı:

db.bios.insert(
   {
     _id: 1,
     name: { first: 'John', last: 'Backus' },
     birth: new Date('Dec 03, 1924'),
     death: new Date('Mar 17, 2007'),
     contribs: [ 'Fortran', 'ALGOL', 'Backus-Naur Form', 'FP' ],
     awards: [
               {
                 award: 'W.W. McDowell Award',
                 year: 1967,
                 by: 'IEEE Computer Society'
               },
               {
                 award: 'National Medal of Science',
                 year: 1975,
                 by: 'National Science Foundation'
               },
               {
                 award: 'Turing Award',
                 year: 1977,
                 by: 'ACM'
               },
               {
                 award: 'Draper Prize',
                 year: 1993,
                 by: 'National Academy of Engineering'
               }
             ]
   }
)



db.bios.find() ile eklenip eklenmediğini görebiliriz.

Şimdi de objectId olmadan ekleyebiliriz.

db.bios.insert(
   {
     name: { first: 'John', last: 'McCarthy' },
     birth: new Date('Sep 04, 1927'),
     death: new Date('Dec 24, 2011'),
     contribs: [ 'Lisp', 'Artificial Intelligence', 'ALGOL' ],
     awards: [
               {
                 award: 'Turing Award',
                 year: 1971,
                 by: 'ACM'
               },
               {
                 award: 'Kyoto Prize',
                 year: 1988,
                 by: 'Inamori Foundation'
               },
               {
                 award: 'National Medal of Science',
                 year: 1990,
                 by: 'National Science Foundation'
               }
             ]
   }
)

Aşağıdaki query ile de kaydı getirebiliriz.

db.bios.find( { name: { first: 'John', last: 'McCarthy' } } )

save() Metodu ile Ekleme

Eğer eklenecek belge _id alanı içermiyorsa save() metodu ekleme yapar.

Örneğin:

db.bios.save(
   {
        name: { first: 'Guido', last: 'van Rossum'},
        birth: new Date('Jan 31, 1956'),
        contribs: [ 'Python' ],
        awards: [
                  {
                    award: 'Award for the Advancement of Free Software',
                    year: 2001,
                    by: 'Free Software Foundation'
                  },
                  {
                    award: 'NLUUG Award',
                    year: 2003,
                    by: 'NLUUG'
                  }
                ]
   }
)








MongoDB - CRUD İşlemleri

MongoDB ekleme işlemlerinde aşağıdaki özellikleri göz önünde bulundurmak gerekiyor:

  • "_id" alanı otomatik olarak her belgede oluşturulur. Eğer kullanıcı _id değeri tanımlamazsa, MongoDB otomatik bir değer ekler ve bu değer benzersiz bir objectId alanıdır. 
  • Eğer "_id" alanı belirtirseniz bu değer benzersiz olmalıdır. Diğer türlü hata mesajı alırsınız. 
  • Maksimum BSON döküman boyutu 16mb dır.
  • Alan adları "$" ile başlayamaz, "." içeremez.

CRUD işlemlerini 4 e ayırabiliriz:
  1. insert (ekleme),
  2. read (Okuma),
  3. update (güncelleme),
  4. delete (silme)


MongoDB - Temel Komutlar

Merhaba.

- mongo.exe komutu ile mongodb yi çalıştırmıştık.

- db : seçili olan veritabanını görüntüler. Eğer seçilmemişse başlangıç olarak test veritabanı gelir.
- show dbs : Mongodb deki veritabanlarını görüntüler.
- use [veritabanı adı] : işlem yapılacak veritabanı seçilir.
- help : Yardım komutu.


- db.[tablo adı].insert(değişken adı)  komutu ile tabloya kayıt eklenir. sqldeki gibi önce tablo oluşturup, sonra verileri eklememize gerek yok. Verileri insert ile eklerken kendisi veritabanına tabloyu ekliyor.

Örnek kullanımı:
var a = {id:1, name:"ergun", age:23}
db.user.insert(a)

Eklenen kaydı;
db.user.find() ile görüntüleyebiliriz.

find() komutu tablo içinden kayıt aramamızı sağlar. Kullanımı ise şöyledir:

db.[tablo adı].find(<query>,projection)

- query, sqldeki where gibi, sorgularımızdır.
- projection, değerleri sonuç kümesinden seçmek için alanların listesine karşılık gelir.


MongoDB Kurulumu

Merhaba arkadaşlar. Ben mongoDB yi windows 7 üzerinde kuracağım.

İlk önce http://www.mongodb.org/downloads adresinden MongoDB dosyasınını indiriniz.

İndirdiğiniz zip dosyasını çıkartınız ve c:/ sürücünün içine "c:/mongodb/[mongodb dosyaları]" olacak şekilde kopyalayınız.

Verilerinizi tutacağınız bir yol belirlemelisiniz.  Ben c:/mongodb/data olacak şekilde belirledim.

Daha sonra konsolu (cmd) açınız ve;

- C:\mongodb\bin\mongod.exe --dbpath [veri yolu] (c:/mongodb/data gibi)

çalıştırınız. Bu kod ile veri yolumuzu mongodb ye tanıttık.

Yeni bir konsol açıp; C:\mongodb\bin\mongo.exe ile mongodbyi çalıştırmış olup, uygulama oluşturmaya başlayabilirsiniz.


NoSQL Kavramı ve MongoDB Nedir?


NoSQL Kavramı

NoSQL (Not Only SQL), ilişkisel veritabanları ve modern yazılım geliştirmenin eksiklerini gidermek amacıyla gelmiştir.

NoSQL de ilişkisel veritabanlarımızdaki gibi verilerimizi satır satır saklamaya, diğer tablolarla ilişkilendirip tanımlamalarımızı yapmıyoruz. Veriler JSON ya da XML formatında saklıyor. 

NoSQL, Fire and Forget prensibi ile çalıştığı için bankacılık, kritik uygulamalarda kullanılmamalıdır. Aksine verinin 100%  önemli olmadığı durumlarda kullanılabilir.


MongoDB Nedir?

MongoDB, C++ ile yazılmış açık kaynaklı ilişkisel olmayan ve önde gelen NoSQL veritabanıdır. Verileri JSON döküman yapısında saklayan hiyerarşik bir veritabanıdır. Çok büyük uygulamaları oluşturmak ve çalıştırmak için tasarlanmıştır. Bu uygulama yeni tip, daha iyi müşteri deneyimi, pazara daha hızlı ve tüm büyüklükteki kuruluşlar için düşük maliyet sağlar.

MongoDB'nin özelliklerini şu şekilde sıralayabiliriz: 
  • Open source
  • Belge veri modeli kullanılmaktadır.
  • İlişkisel veritabanlarındaki gibi SHEMA yapısı bulunmamaktadır.
  • Veriler JSON formatında sakladır. 
  • Yatay ve dikey ölçeklenebilir.
  • Tam, esnek index ve zengin sorgu imkanı sunar.
  • Performansı, ilişkisel vetitabanlarına göre daha fazladır. 
  • Gelişmiş güvenliğe sahiptir. 
  • Map Reduce özelliğine sahiptir. 
  • GridFS ile büyük depolama alanı vardır.
  • Sürekli genişleyen sistemler için uygundur. 
MongoDB; ölçeklenebilir, yüksek performanslar gerektiren uygulamalarda kullanılmak üzere inşa edilmiştir. Auto-Sharding tek sunucu dağıtımları, geniş, karmaşık çoklu veri merkezi mimarileri MongoDB sağlar. MongoDB, ön belleğine alır, RAM den okuyarak yüksek bir performans sağlar.