MongoDB İLE İSTEMCİ OLUŞTURMA
MongoDB’yi başlattığınızda, shell otomatik olarak MongoDB sunucusundaki test veritabanına bağlanır ve bu veritabanı bağlantısı db adlı global değişkende saklanır. Bu değişken, MongoDB sunucusuna shell ile erişim için birincil noktadır. Şimdi, komut satırında db girerek enter’a basınız:
> db
test
>
SHELL İLE TEMEL İŞLEMLER
Bu bölümde shell ile 4 temel işlemi gözden geçireceğiz:
I. Create (veri oluşturma)
II. Read (okuma)
III. Update (güncelleme)
IV. Delete (silme)
I.VERİ OLUŞTURMA (CREATE)
Insert fonksiyonu, bir dokümanı bir koleksiyon içine ekleme işlevini yerine getirir.
Önce bir kitap ile ilişkili bilgileri saklayacağımız bir doküman oluşturalım. Dokümanı post adı ile oluşturduk:
> post = {"kod" : 1255, "konu" : "roman", "fiyat" : 15, "miktar" : 500, "stok_gir_tar" : new Date()}
{
"kod" : 1255,
"konu" : "roman",
"fiyat" : 15,
"miktar" : 500,
"stok_gir_tar" : ISODate("2015-02-23T17:29:16.760Z")
}
ANAHTAR(KEY) |
DEĞER(VALUE) |
---|---|
kod |
“1255” |
konu |
“roman” |
fiyat |
15 |
miktar |
500 |
stok_gir_tar |
“2014-09-01” |
Dökümanı kitap adlı bir koleksiyonun içine eklemek için insert metodunu kullanıyoruz:
> db.kitap.insert(post)
WriteResult({ "nInserted" : 1 })
>
kitap adlı koleksiyonu listelemek içinse find() fonksiyonunu kullanabiliriz;
> db.kitap.find()
{ "_id" : ObjectId("54eb63780fb6afb327b12626"), "kod" : 1255, "konu" : "roman", "fiyat" : 15, "miktar" : 500, "stok_gir_tar" : ISODate("2015-02-23T17:29:16.760Z") }
Burada, daha önce veri içinde olmayan _id değişkeninin eklendiğine dikkatinizi çekiyoruz. Bunun nedeni ile ilişkili bilgileri daha sonra vereceğiz.
II.OKUMA (READ) İŞLEMİ
Bir koleksiyonu sorgulamak için find ya da findOne metotları kullanılabilir. Koleksiyon içinden bir tek elemanı görmek istersek findOne metodunu kullanırız:
> db.kitap.findOne();
{
"_id" : ObjectId("54eb63780fb6afb327b12626"),
"kod" : 1255,
"konu" : "roman",
"fiyat" : 15,
"miktar" : 500,
"stok_gir_tar" : ISODate("2015-02-23T17:29:16.760Z")
}
find ve findOne ile koşula bağlı listeleme de yapılır. Daha sonra bu konuda örnekler verilecektir.
III.GÜNCELLEME (UPDATE)
Kaydedilmiş bilgi üzerindeki değişikliklerin yansıtılması yani güncelleme işlemi bilgi işlem teknolojisinde en önemli işlerden biridir.
Şimdi kitap adlı koleksiyon içindeki dokümanımızda bir değişiklik yapmak istiyoruz ve o anda mevcut olmayan “yayinevi” bilgisini eklemek istiyoruz. Yayınevinin adı da “Turkcell” dir. Önce aşağıdaki komutu girmeliyiz:
> post.yayinevi="Turkcell"
Turkcell
Komut başarı ile çalıştı. Şimdi güncellemeyi tamamlamak için update metodunu kullanırız:
> db.kitap.update({"kod":1255},post)
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
Burada kod’u 1255 olan kitabın yayınevi “Turkcell” olarak atanmıştır. Şimdi güncel durumu görebilmek için find() metodunu kullanabiliriz:
> db.kitap.find()
{ "_id" : ObjectId("54eb63780fb6afb327b12626"), "kod" : 1255, "konu" : "roman", "fiyat" : 15, "miktar" : 500, "stok_gir_tar" : ISODate("2015-02-23T17:29:16.760Z"), "yayinevi" : "Turkcell" }
Böylece güncelleme işlemi başarı ile sonuçlanmıştır.
IV.SİLME (DELETE)
remove() metodu ile bir koleksiyon içinden dokümanları silmek mümkündür. Koşul ya da parametre belirtilmezse koleksiyon içindeki tüm dokümanlar silinecektir.
> db.kitap.remove({"kod": 1255})
WriteResult({ "nRemoved" : 1 })db.kitap.find()
Böylece koleksiyon içinde sadece 1 doküman olduğu için onu sildiğimizde koleksiyon boşalmıştır ve artık veri içermemektedir.
MongoDB’DE VERİ TÜRLERİ
Genellikle MongoDB’de dokümanları JSON benzeri veriler olarak düşünmek mümkündür. Bunlar kavramsal olarak ta JavaScript nesnelerine benzerler. JSON verinin oldukça basit bir saklama biçimidir. 6 çeşit veri tipi söz konusudur. Date türü veri yoktur.
MongoDB, JSON’un anahtar/veri ikilisi mantığını kullanırken ilave bazı veri çeşitleri de kullanmaktadır.
null
null veri tipi mevcut olmayan alanlar ya da boş veri alanını temsil etmek için kullanılır.
ÖRNEK:
> c={a:null}
{ "a" : null }
> c
{ "a" : null }
> b=c
{ "a" : null }
> b
{ "a" : null }
>
boolean
Mantıksal veri tipidir; değeri ya doğru (true) ya da yanlış (false) tur.
ÖRNEK:
{“a”:true}
number
Sayı türü numeric değerlerle işlem yapmak için kullanılır. shell için default durum 64 bitlik kayan noktalı(floating point) sayıları kullanmaktır.
ÖRNEK:
{"e" : 2.718}
Tamsayılar içinse NumberInt (4 byte) ya da NumberLong (8 byte) sınıfları kullanılır.
ÖRNEK:
{"m" : NumberInt("7")}
{"n" : NumberLong("789")}
string
Karakter zinciri anlamındadır; UTF-8 karakterlerinden oluşur:
{“ad”:”ahmet cemil”}
date
Tarihler milisaniye olarak saklanır. Zaman bölgesi saklanmaz.
ÖRNEK:
{"tarih" : new Date()}
regular expression
Düzenli ifadeler sorgular için çok faydalı ve bazen çok karmaşık olabilen ifadelerdir; MongoDB ’de düzenli ifadeler için JavaScript’in düzenli ifadeler için kullandığı yazılış biçimini kullanır.
{"aa" : /fter/jj}
array
Diğer dillerden de bildiğiniz gibi tek bir isim altında toplanmış çok sayıda elemandan oluşur; yazılış biçimi aşağıdaki gibidir:
{"s" : ["x", "y", "z", ”k”]}
gömülü belge (embedded document)
Bir doküman başka bir doküman içine yerleştirilebilir böyle bir dokümana gömülü doküman adı verilir.
ÖRNEK:
{"rr" : {"kod" : "2345"}}
nesne belirleyicisi (object id)
Nesnelerle ilişkili hale getirilen özel anahtarlardır. Bir nesne belirleyicisi, 12 byte uzunluğundadır.
ÖRNEK:
{"asd" : ObjectId()}
ikili sistemde temsil edilen veri (binary data)
Keyfi byte dizisinden oluşur. shell içinden işlenemez. Sadece UTF-8 string’i olmayan veriyi saklamak için kullanılır.
Kod (code)
Sorgular (queries) ve dökümanlar (documents) JavaScript kodlarını da içerebilir:
ÖRNEK:
{"wer" : function() { /* ... */ }}
Tarihler (Dates)
JavaScript’te, Date sınıfı, MongoDB için tarih tipi olarak kullanılır.
Yeni bir Date nesnesi oluşturulacağı zaman daima new Date() ifadesi kullanılır.
Diziler (Arrays)
Diziler hem sıralı yapılar (liste, yığın, kuyruk) hem de sırasız yapılar (küme) için kullanılır. Aşağıdaki örnekte anahtar değeri bir diziden oluşmaktadır:
{"anahtar" : ["e", 2.718]}
GÖMÜLÜ DÖKÜMANLAR (Embedded Documents)
Dokümanlar bir anahtar için değer olarak da kullanılabilir. Bu durumda gömülü doküman kullanımı söz konusudur. Gömülü dokümanlar sayesinde veri gerçek yaşamdaki ihtiyaçlara göre organize edilebilir.
ÖRNEK:
{
"ad" : "ali can",
"adres" : {
"cadde" : "cumhuriyet cd 56",
"sehir" : "mersin",
"posta_kod" : "54678"
} }
Yukardaki örnekte adres anahtarı aslında bir dokümandan oluşmaktadır. Bu dokümandaki anahtarlar ise, cadde, sehir ve posta_kod alanlarıdır.
_id ve ObjectId
MongoDB’de her saklanacak elemanın bir “_id” anahtarı olmalıdır. “_id” anahtarı herhangi bir veri türünde olabilir fakat default olarak ObjectID’dir. Bir koleksiyon içindeki her dokümanın bir “_id” değeri oluşturulur bu sayede bu unique kod yardımı ile birbirinden farklı dokümanlara erişilebilir. Farklı iki koleksiyonda aynı “_id” numaralı dokümanlar bulunabilir ancak tek bir koleksiyon içinde aynı “_id” numarasına sahip birden fazla doküman bulunamaz.
ObjectId
ObjectID,”_id” tipi için default değerdir. ObjectID’ler, 12 bytelık yer kaplar; her byte için 2 hexadecimal basamak hesabı ile 24 hexadecimal uzunluğunda bir anahtar söz konusudur.