PDKT dengan MongoDB

Muhammad Arslan 14 Februari 2016

PDKT dengan MongoDB

Pendahuluan

MongoDB merupakan sebuah database yang memiliki konsep NoSQL. Istilah ini dapat diartikan secara awam dengan non relasional karena berbeda dengan MySQL yang merupakan RDBMS (relational database management system). Ketika Anda membuat sebuah tabel di MongoDB, di dalam suatu kolom baris bisa terdapat baris lain yang tertanam (embedded document). Bahkan setiap baris data di tabel MongoDB dapat memiliki kolom yang berlainan dengan baris lainnya. Baris pertama bisa mempunyai 20 kolom, baris keseratus atau keseribu mungkin mempunyai 40 kolom. Jika di RDBMS, kolom sebuah baris harus sama dengan baris yang lain atau bersifat fixed, tabel di MongoDB pun dapat dibuat selayaknya tabel yang ada di RDBMS.

Untuk mempelajari MongoDB, Anda harus mengenali beberapa keunikan MongoDB yang sudah dikenal:

  • Istilah table di MongoDB dinamakan collections
  • Istilah rows di MongoDB dinamakan documents
  • Setiap documents dapat berisi kolom yang berbeda dengan documents lainnya
  • Sebuah collections dapat membuat setiap documents memiliki kolom yang sama dengan membuat parameter capped menjadi true saat pembuatan collection
  • Query yang digunakan oleh MongoDB tidak menggunakan bahasa query seperti SQL, tapi menggunakan Javascript. Bahkan Anda dapat membuat semacam stored procedure yang ditulis menggunakan Javascript
  • Secara default setiap membuat documents baru, id dari documents tersebut akan tercipta otomatis. Jadi Anda tidak perlu membuat id sendiri jika membutuhkan id
  • dan masih banyak lagi

Persiapan alat

Untuk mencoba MongoDB di mesin lokal Anda, alat yang dibutuhkan hanya, command prompt, sistem operasi, dan installer MongoDB. Di tutorial ini akan digunakan sistem operasi Ubuntu Linux dan aplikasi Terminal. Untuk pengguna Windows Anda dapat menggunakan installer .exe, sedangkan untuk pengguna Linux, Anda dapat menggunakan versi .tgz atau .zip yang nantinya cukup diekstrak saja dan ditaruh di folder /opt/. Tapi untuk pengguna Linux, kita harus membuat sebuah direktori /data/db yang akan menyimpan file - file yang terkait dengan MongoDB seperti file database, file log, dan lainnya.
cd /home/nama_user_anda/Downloads
tar -xzvf mongodb.tgz
mv mongodb /opt

Koneksi ke MongoDB

Untuk menyalakan MongoDB Anda harus masuk ke direktori bin tempat dimana MongoDB disimpan. Misal kita masuk ke direktori /opt/mongodb/bin, kemudian setelah masuk panggil perintah mongod dan daemon MongoDB pun akan berjalan. Silahkan buka terminal baru dan ketikkan perintah berikut (jika Anda menggunakan Linux):
cd /opt/mongodb/bin
./mongod
Untuk terhubung ke MongoDB di mesin lokal, Anda dapat mulai membuka terminal kemudian gunakan mongo client dengan masuk terlebih dahulu ke direktori MongoDB ditempatkan. Misal jika ditaruh di /opt/mongodb, mari kita masuk terlebih dahulu ke direktori tersebut, kemudian masuk ke direktori bin lalu panggil perintah mongo maka seketika akan muncul sebuah REPL (read eval print loop) yang akan membantu Anda memulai operasi di MongoDB. Silahkan buka terminal baru dan ketikkan perintah berikut (jika Anda menggunakan Linux):
cd /opt/mongodb/bin
./mongo

Membuat database baru

Untuk membuat sebuah database baru di MongoDB, Anda cukup membuat document baru pada database yang akan digunakan. Sebelum membuat database pastikan Anda memeriksa database yang sudah ada terlebih dahulu dengan perintah berikut:
show dbs;
Kemudian kita akan mencoba membuat database baru yang bernama mytrip. Setelah itu kita akan membuat sebuah collection yang bernama trip. Lalu kita akan mengisinya dengan document baru sebagai inisialisasi:
use mytrip;
db.trip.insert({name:'perjalanan ke nepal', category:'pegunungan', city:'khatmandu, nepal', 'description':'mencari foto yang bagus di kuil budha'});
Bila Anda memerhatikan ketika mengetikan perintah di REPL milik MongoDB, Anda dapat menggunakan tab untuk melengkapi perintah secara otomatis dan memberikan saran perintah yang dapat Anda gunakan. Hal ini sangat efektif sehingga Anda dapat melihat perintah yang mirip dengan perintah yang akan digunakan. Sekarang kita akan mencoba melihat document yang baru saja diciptakan:
db.trip.find();

Membuat document baru

Untuk membuat document baru Anda dapat melewatkan berbagai kolom sesuai kebutuhan sistem. Setiap dokumen dapat memiliki kolom yang berbeda - beda. Sekarang kita akan mencoba membuat document untuk keperluan query di bagian tutorial berikutnya:
db.trip.insert({name:'perjalanan ke nepal', category:'pegunungan', city:'khatmandu, nepal', 'description':'mencari foto yang bagus di kuil budha'});
Sekarang kita akan mencoba membuat document baru dengan tambahan kolom yang lebih banyak:
db.trip.insert({name:'perjalanan ke pulau seribu', category:'pantai', city:'kepulauan seribu, jakarta', 'description':'lorem ipsum sit dolor amet.'});
db.trip.insert({name:'bersepeda motor ke bukit moko', category:'bukit', city:'cimenyan, bandung', 'description':'lorem ipsum sit dolor amet.'});
db.trip.insert({name:'menelusuri kebun teh di pangalengan', category:'pegunungan', city:'pangalengan, bandung', 'description':'lorem ipsum sit dolor amet.'});
db.trip.insert({name:'hiking ke curug cilengkrang', category:'pegunungan', city:'cibiru, bandung', 'description':'lorem ipsum sit dolor amet.'});
db.trip.insert({name:'menyusuri pantai selatan garut', category:'pantai', city:'pameungpeuk, garut', 'description':'lorem ipsum sit dolor amet.'});
db.trip.insert({name:'sauna alami di kawah kamojang', category:'pegunungan', city:'kamojang, garut', 'description':'lorem ipsum sit dolor amet.'});
db.trip.insert({name:'snorkeling di gili trawangan', category:'pantai', city:'gili trawangan, lombok', 'description':'lorem ipsum sit dolor amet.'});
Kita pun dapat membuat sebuah document yang memiliki kolom berupa array, sehingga kita tidak perlu membuat relasi selayaknya di RDBMS:
db.trip.insert({name:'caving di gua sanghyang tikoro', category:'bukit', city:'rajamandala, bandung', 'description':'lorem ipsum sit dolor amet.', gears:['senter', 'sepatu boot', 'helm', 'jaket waterproof', 'tali buat wall climbing']});
Kita pun dapat menyimpan sebuah document di dalam suatu kolom document:
db.trip.insert({name:'jalan santai tahura dago', category:'hutan', city:'dago, bandung', description:'lorem ipsum sit dolor amet.', geo_information:{areal:112305, species:{flora:123, fauna:50}, mdpl:2000, latitude:107.501, longitude:6.572}});

Melakukan query find()

Anda dapat menampilkan semua document yang ada pada collection dengan perintah berikut:
db.trip.find();
Untuk mempercantik output pada console, Anda dapat menambahkan chaining method pretty():
db.trip.find().pretty();
Anda dapat mencari document berdasarkan kolom dengan nilai spesifik:
db.trip.find({category:'hutan'});
db.trip.find({category:'pantai'});
Anda dapat mencari document berdasarkan kata yang diinginkan dengan regular expression (regex):
db.trip.find({city:/jakarta/})
db.trip.find({city:/garut/})
db.trip.find({city:/bandung/})
Anda dapat mencari document berdasakan nilai yang terkandung dalam sebuah kolom array di suatu document:
db.trip.find({gears:{ $in: ['senter'] }});
Bila ingin mencari sebuah document dengan menggunakan id yang dilewatkan ke dalam function ObjectId(). Teknik tersebut dapat dilakukan seperti pada cara berikut ini:
db.trip.find({_id:ObjectId('56bf467bef12edd23fdafc58')});
Terakhir, Anda dapat mencari sebuah document berdasarkan embedded document yang terdapat di dalam kolom document tersebut:
db.trip.find({'geo_information.mdpl':2000}).pretty();

Melakukan query update()

Untuk memperbaharui suatu kolom di dalam document, Anda dapat menggunakan id untuk penentu kemudian menggunakan operator $set untuk mengubah field tersebut:
db.trip.update({_id:ObjectId('56bf23dd1ec247373ec77ed3')}, {$set: {name:'perjalanan ke bukit moko'} });
Untuk menambah item pada suatu field array di dalam document Anda dapat menggunakan operator $push untuk menambah item sedangkan operator $pull untuk mengurangi item:
db.trip.update({_id:ObjectId('56bf24561ec247373ec77ed9')}, {$push: {gears:'kantong kresek'} });
db.trip.update({_id:ObjectId('56bf24561ec247373ec77ed9')}, {$pull: {gears:'kantong kresek'} });
Untuk mengubah suatu nilai kolom embedded document, Anda dapat menggunakan tanda titik untuk mengakses kolom atau atribut yang ingin diubah:
db.trip.update({_id:ObjectId('56bf467bef12edd23fdafc58')}, {$set: {'geo_information.species.fauna':100}});

Melakukan query remove()

Untuk menghapus suatu document, Anda dapat menggunakan id dari suatu document:
db.trip.remove(_id:ObjectId('56bf1c8d1ec247373ec77ed1'));
Anda pun dapat menggunakan regular expression untuk menghapus sejumlah document:
db.trip.remove({city:/jakarta/});

Melakukan penghapusan collection dan database

Untuk melakukan penghapusan collection, Anda cukup menggunakan method drop():
db.trip.drop();
Sedangkan untuk melakukan penghapusan database, Anda harus menggunakakn method dropDatabase():
db.dropDatabase();

Penutup

Sekarang Anda sudah dapat mengenal cara instalasi, penggunaan query, dan konsep dasar dari MongoDB. Anda dapat membangun aplikasi dengan sistem schema-free dimana Anda tidak dibebankan untuk membuat konsep relasional dari database yang akan dibangun untuk sistem Anda. Memang konsep NoSQL ini dapat berbeda satu sama lain. Misal jika Anda menggunakan graph database seperti Neo4j, konsepnya tidak akan sama dengan MongoDB yang berbasiskan document. Oleh karena itu penting untuk mendalami konsep dan ribuan fitur yang terdapat di suatu database NoSQL.

Referensi

  • MongoDB Official Documentation
  • TutorialsPoint - MongoDB
  • StackOverFlow dengan keyword "mongodb"
(codepolitanteam)