Android ile MongoDB Kullanımı (Web Servis ile MongoLab’a Bağlanarak..)

Öncelikle Merhabalar..

Uzun süredir yazma niyetinde olduğum; önceki makalelerde yarım bıraktığım ve yoğunluktan dolayı bir türlü tamamlayamadığım MongoDB makalelerine bu kez Android platformunda ki kullanımı anlatarak devam ediyorum. 🙂

Bu makalede kendi hazırlamış olduğum MongoLabHelper sınıfı ile MongoLab.com‘da barındırmakta olduğum sunucuma RESTful API (Web Servis) ile bağlanarak; sunucudaki veri tabanının kullanımı hakkında bilgiler vereceğim.

İlk olarak MongoLabHelper.java dosyasını aşağıdaki linkten indirip projemize ekliyoruz.
https://github.com/umon/MongolabHelper

MongoLabHelper.java dosyasını incelediğimizde ;

kodlarını göreceksiniz.

burada database değişkenine veri tabanınızın adını, collection değişkenine de koleksiyonunuzun adını yazmalısınız.

andro1

apiKey‘inizin ne olduğunu öğrenmek için ise User sayfasına giriyoruz. Burada ki anahtarı apiKey değişkenine yazıyoruz. Daha sonra Data Api Access‘i Enable yapıp RESTful API ile veri alışverişini etkinleştiriyoruz.

andro2

 

MongoLabHelper.java sınıfının kullanımı oldukça kolaydır. Bu sınıf sayesinde RESTful API hakkında hiç bir bilginiz olmasa bile JSON verilerini kullanarak rahat bir şekilde bilgilerinizi web ortamında saklayabilirsiniz.

apiKey, database ve collection değişkenlerini değiştirdikten sonra kullanacağımız komutlara geçelim.

 

getCollections() : Bu metod veri tabanı içindeki koleksiyonları görmemize yarar. Hemen bir örnek yapacak olursak;

kodunu çalıştırdığınızda Logcat’te şu çıktıyı alacaksınız :

Burada dikkat ederseniz; [ “objectlabs-system” , “objectlabs-system.admin.collections” , “system.indexes” , “umutonur.com” ]  çıktısı aslında bir JSON Dizisinin çıktısıdır. Dizinin elemanları; veri tabanında bulunan koleksiyonları gösterir. Bu dizideki ilk 3 eleman MongoLab’ta ki sunucunun sistemine ait koleksiyonlardır. Bu 3 koleksiyonla herhangi bir işimiz olmayacak.

4. eleman ise (“umutonur.com”) bizim daha önceki derslerde oluşturmuş olduğumuz koleksiyondur. Örneklerimizi bu koleksiyon üzerinden yapacağız.

 

getCollection() : Bu metod; Makalenin başında database değişkeninde belirtiğimiz veri taban içindeki collection değişkeninde belirttiğimiz koleksiyonda olan verileri almamızı sağlar.

Logcat çıktısı :

Gördüğünüz gibi koleksiyonumuzda eleman olmadığı için bize boş bir JSON Dizisinin çıktısını verdi.

getCollection(“koleksiyon”) : Bu metod database değişkeninde belirtmiş olduğumuz veri tabanı içinde ki farklı koleksiyonlardan veri almamızı sağlar.

getCollection(“veritabanı”, “koleksiyon”) Bu metod parametre belirtiğimiz veritabanı ve koleksiyondaki verileri almamızı sağlar.

Ayrıca setCollection(“koleksiyon ismi”) , setDatabase(“veri tabanı ismi”) ve setApiKey(“api anahtarı”) metodlarıyla MongoLabHelper sınıfı içinde belirtmiş olduğumu database , collection ve apiKey değişkenlerinin değerini uygulama içerisinde değiştirebilmemiz de mümkündür.

 

insert() : Veri tabanına veri ekleyebilmemizi sağlayan metoddur. Tek bir JSON nesnesi ekleyebildiğimiz gibi, birden fazla JSON nesnesinden oluşan bir JSON dizisi de eklememiz mümkündür.

Yukarıda yaptığımız veri ekleme işleminin sonucuna bakacak olursak :

Gördüğünüz gibi yapılan her işlemin sonucu Logcat ekranında görülebilir.
Bu kez aynı şekilde bir JSON dizisi ekleyip sonucuna bakalım:

Sonuç :

Yaptığımız 2 ekleme işleminden sonra veri tabanımızın son haline bakacak olursak :

Gördüğünüz gibi 1. ve 2. insert() işlemlerinde veri tabanımıza sırasıyla JSON nesnesi ve JSON dizisi ekledik.

Yapılan tüm “GET” isteklerinde sunucudan alınan veriler Logcat ekranında “Response” anahtarının karşılığı olarak gözükmektedir.

Daha önceki makalelerde de bahsettiğim gibi “$oid” anahtarına karşılık gelen değerler, veri tabanında bulunan ilgili JSON nesnesinin Object Id’sini vermektedir. Koleksiyon içindeki her elemanın kendine özgü bir Object Id’si bulunmaktadır. Veri güncelleme ve veri silme işlemlerini yaparken bu Object Id’leri kullanacağız.

 

find() : Koleksiyon içindeki elemanlarda arama/eşleşme gibi işlemler yapacağımız zaman bu metodu kullanıyoruz.

Yukarıda yaptığımız insert() işlemlerinde dikkat ettiyseniz eklediğimiz her veride biz “bul” anahtarı kullandık.
Şimdi find() metodunu kullanarak bu elemanlar arasında “bul” anahtarının “true” değerine eşit olduğu koleksiyon elemanlarını görüntüleyelim.

 

findOne() : Koleksiyon içinde yaptığımız aramalarda sonuç olarak çıkan ilk elemanı bize verir. Kullanımı find() metodu ile aynıdır.

 

update() : Koleksiyondaki herhangi bir elemanı güncellemek için kullanılır. 2 şekilde kullanılabilir.

1 – Object Id’ye göre : – update(“object id”, JSON Nesnesi) –

Yukarıda ki kodda Object Id‘si “56dac9e8e4b07e85eadde1c3” olan elemanın “bul” anahtarındaki verinin değeri false olarak güncellenmiştir.

 

2 – Eşleşen veriye göre (Query) ; – update(JSON Nesnesi, “eşleşecek veri”)

Yukarıda kod “json dizisi” anahtarının 3 olduğu elemanı bulup bu anahtarı “nesne 3” şeklinde güncellemektedir.

Bu metodlarından başka olarak upsert() metodu da update() metodunun 2. kullanımıyla aynı biçimde kullanılır. Aralarındaki fark ise eşleşen elemanın kalıbı bizim yolladığımız verinin kalıbına uymazsa yeni bir eleman oluşturulacaktır.. Yani upsert() metodunun update() ve insert() metodlarının birleşimi gibi olduğunu söyleyebiliriz.

 

updateMany() :  Kullanımı update() metodunun 2. kullanımıyla aynıdır. Aralarındaki fark ise updateMany() metodunun eşleşen tüm elemanları güncellemesidir..

 

delete() : Bu metod belirtilen Object Id’deki elemanı veri tabanından silmemizi sağlar.

 

count() : Yaptığımız herhangi bir eşleşme işleminde eşleşen kaç sonuç olduğunu bize verir.

Yukarıdaki kodda “bul” anahtarının true değerine eşit olduğu elemanlar bulunup; kaç tane eleman olduğu count() metoduyla gösterilmiştir.

 

MongoLabHelper ile MongoLab.com üzerinde bulunan MongoDB sunucunuzda yapılabilecek çoğu işlemi gerçekleştirebilirsiniz.

Hatalı gördüğünüz herhangi bir noktayı benimle paylaşabilirsiniz. Ayrıca Github üzerinden projeye katkıda bulunabilirsiniz.

Iyi kodlamalar 🙂



You may also like...

3 Responses

  1. dilnur dedi ki:

    Merhaba Umut,
    Öncelikle bu bilgi paylaşımın için çok teşekkürler. Son derece açıklayıcı ve faydalı bir yazı olmuş. Ben projeye MongoLabHelper class ını eklediğimde hatalar alıyorum. Mesela ‘oid’ için create field diyor.String olarak tanımlanmamış. Ben tanımladım. Ama çalıştırınca doInBackground hatası veriyor. Acaba android studio sürümünden mi kaynaklıdır? Ya da hangi sdk da yapmalıyım?

  2. cmldmr dedi ki:

    Dostum bu Sanki MongoLab Api si gibi, yani direk mongodb veri tabanına bağlantı driverı değil. Yanlış mı anladım. Teşekkürler

    • Umut ONUR dedi ki:

      Evet, yazıda anlatılan MongoDb driver’ı değil, MongoLab Wep Api ile iletişim kuran bir yardımcı bir sınıftır. MongoLab ise kullanıcılara MongoDb hizmeti sağlayan bir sitedir.

Bir Cevap Yazın