Hands-On MongoDB

ikraduya edian
Ristex
Published in
4 min readFeb 15, 2019

MongoDB adalah sebuah cross-platform database yang berorientasi dokumen. Database ini masuk dalam kategori database NoSQL yang artinya cara pengaksesan database tidak menggunakan SQL (Structured Query Language).

MongoDB menggunakan document-based query language dengan sintaks mirip JSON (JSON-like syntax). Seperti database NoSQL pada umumnya, MongoDB tidak memerlukan predefined structure terhadap data yang akan disimpan.

Pada saat tulisan ini dibuat, MongoDB sangatlah luas penggunaannya mulai dari pengembangan website hingga sistem robotika. MongoDB mempunyai beberapa kelebihan diantaranya high performance, high availability, high scalability, dinamis, dan fleksibel. MongoDB relatif lebih cepat dibandingkan dengan sistem SQL database pada umumnya.

Sedangkan kekurangan database ini ialah cenderung tidak memenuhi properti ACID (Atomic, Consistency, Isolation, Durability) sebagai bentuk dari trade-off fleksibilitas yang ditawarkan.

Download dan Install MongoDB

  1. Download MongoDB Community Server di https://www.mongodb.com/download-center/community
    Sesuaikan dengan sistem operasi yang anda gunakan
  2. Lakukan instalasi dengan mengikuti dokumen Installation Instructions yang juga dapat Anda download di halaman yang sama
  3. Tambahkan path mongodb agar mongodb shell dapat langsung dijalankan melalui terminal/command prompt
    Windows: https://docs.mongodb.com/v3.2/tutorial/install-mongodb-on-windows/#run-mongodb-community-edition
    Linux: https://docs.mongodb.com/v3.2/administration/install-on-linux/
  4. Jalankan MongoDB sebagai background process
    Windows: net start MongoDB
    Linux: sudo service mongod start

Hands-On

Download contoh database hasil export di sini. Cara mengimport lihat section paling bawah.

Mengakses MongoDB shell

mongo

Clear Screen

cls

Melihat daftar database

show dbs

Menciptakan dan menggunakan database

Format: use <db-name>
Contoh:use shinobi

Melihat database yang sedang digunakan

db

Membuat pengguna database

Format:

db.createUser({
user: “<nama>”,
pwd: “<password>”,
roles: [
{ role: “<role>”, db: “<database>” } | “<role>”, …
]
});

Penjelasan lebih lanjut tentang kreasi akun user: https://docs.mongodb.com/manual/reference/method/db.createUser/

MongoDB menyimpan record/dokumen ke dalam suatu collection. Satu database biasa terdiri dari beberapa collection. Collection ini mirip seperti table/relation pada relational database.

Melihat daftar collection

show collections

Menciptakan collection

Format: db.createCollection(‘<nama-collection>’);
Contoh: db.createCollection(‘shinobi’);

Menambahkan dokumen ke dalam collection (insert)

Format: db.collection.insert(<JSON-OBJECT>);
Contoh:

db.shinobi.insert({
first_name: “Naruto”,
last_name: “Uzuma”,
age: 32,
address: {
planet: “earth”,
village: “konohagakure”
},
natureType: [“lava”, “boil”, “wind”]
});

Menambahkan banyak dokumen sekaligus (batch insert)

Format: db.collection.insert([<JSON-OBJECT1>, <JSON-OBJECT2>, …]);
Contoh:

db.shinobi.insert([
{first_name: “Madara”, last_name: “Uchiha”},
{first_name: “Hashirama”, last_name: “Senju”, rank: “kage”}
]);

Salah satu kelebihan NoSQL database ialah fleksibilitas data. Data yang tersimpan di collection tidak diharuskan mengikuti suatu pre-defined schema tertentu, boleh berbeda.

Menampilkan daftar semua dokumen di suatu collection

Format: db.collection.find();
Contoh: db.shinobi.find();

Menampilkan daftar semua dokumen yang memenuhi kondisi

Format: db.collection.find(<JSON-OBJECT>);
Contoh:

db.shinobi.find({
last_name: “Uzumaki”
}); // mencari dokumen yang mempunyai last_name = “Uzumaki”
db.shinobi.find({
“address.village”: “konohagakure”
}); // objek dengan level lebih dalam diakses dengan titik “.”
db.shinobi.find({
natureType: “wind”
}); // mencari dokumen berdasarkan nilai yang berada di dalam array

Mencari dokumen dengan conditional statement query, menggunakan modifier $or.
Contoh:

db.shinobi.find({
$or: [
first_name: “Naruto”,
last_name: “Uchiha”
]
}); // mencari dokumen dengan first_name = “Naruto” atau last_name = “Uchiha”

Menggunakan $lt(less than) atau $gt (greater than) khusus untuk field bertipe number.
Contoh: db.shinobi.find({age: {$gt: 40}});

Tampilan hasil query dari method find dapat dimodifikasi dengan tambahan method sort().
Format: db.collection.find(<JSON-QUERY>).sort(<JSON-SORT-BY>);
Contoh:

db.shinobi.find({last_name: “Otsutsuki”}).sort({age: 1});
// mengurutkan berdasarkan umur secara menaik (ascending)
db.shinobi.find({last_name: “Otsutsuki”}).sort({age: -1});
// mengurutkan berdasarkan umur secara menurun(descending)

Hasil query juga dapat dihitung dengan method count()
Format: db.collection.find().count();

Ataupun dibatasi dengan method limit()
Format: db.collection.find().limit(<limit>);
Contoh: db.shinobi.find().limit(5);

Tampilan hasil query dapat dimodifikasi sesuai dengan keinginan user menggunakan user defined function pada forEach()
Contoh:

db.shinobi.find().forEach(function(doc){
print(“First name: “ + doc.first_name)
});

[Screenshot hasil]

Menampilkan dokumen dengan lebih “cantik”

Format: db.collection.find().pretty();
Contoh: db.shinobi.find().pretty();

Mengubah dokumen (update)

Format: db.collection.update(<JSON-OBJECT-QUERY>, <OBJECT>);
Contoh: db.customer.update({first_name: “Madara”}, {first_name: “Sasuke”, last_name: “Uchiha”});

Update method akan mengganti semua dokumen yang sesuai (match) dengan <JSON-OBJECT-QUERY> menjadi <OBJECT>. Jika Anda hanya ingin menambahkan suatu field ke dalam dokumen tanpa mengubah isi field lain, gunakan modifier $set.
Contoh: db.customer.update({first_name: “Madara”}, {$set: {kekkaiGenkai: “fire”}); // menambahkan field kekkaiGenkai ke dalam document, tidak merubah field lain

Anda dapat mengubah dokumen dengan menambah atau mengurangi nilai dari suatu field dengan menggunakan modifier $inc.
Contoh: db.customer.update({first_name: “Hashirama”}, {$inc: {age: 5}}); // menambahkan umur Hashirama sebanyak 5

Selain itu, method update juga dapat menghapus field dokumen dengan modifier $unset.
Contoh: db.customer.update({first_name: “Madara”}, {$unset: {age: “”, gender: “”}}); // “” tidak berpengaruh terhadap operasi

Dengan modifier $rename Anda dapat mengubah nama suatu field tambah mengubah nilainya.
Contoh: db.shinobi.update({first_name: “Minato”}, {$rename: {“nick”: “julukan”}});

Method update yang parameter query-nya tidak menemukan satupun dokumen tidak akan merubah apapun. Apabila update dimaksudkan untuk menginsert dokumen jika tidak terdapat match, Anda dapat menggunakan option upsert.
Contoh:

db.customer.update(
{first_name: “Naruto”},
{
first_name: “Naruto”,
last_name: “Uzumaki”,
parent_name: “Minato”
},
{upsert: true}
); // jika dokumen dengan first_name = “Naruto” tidak ditemukan, objek baru akan terbentuk`

Menghapus dokumen

Format: db.collection.remove(<JSON-QUERY>);
Contoh: db.shinobi.remove({first_name: “Neji”});

Anda dapat membatasi jumlah dokumen yang ingin Anda hapus dengan option justOne. Option ini membuat method remove hanya akan menghapus paling banyak satu buah dokumen.
Contoh: db.shinobi.remove({last_name: “Hyuga”}, {justOne: true});

Import dan Export Data

Perintah Import dan Export dijalankan di luar mongodb shell. Ketikkan exit untuk keluar dari shell.

Import Data ke Collection

Format: mongoimport — db <database> — collection <collection> — file <filename>.json
Contoh: mongoimport — db ristex — collection shinobi — file shinobi.json

Export Data pada Collection

Format: mongoexport — db <database> — collection <collection> — out <filename>.json
Contoh: mongoexport — db ristex — collection shinobi — out shinobi.json

Penutup

Harapannya setelah membaca dan mempraktekkan tulisan ini, Anda menjadi lebih mengerti cara menggunakan MongoDB. Masih banyak fitur-fitur lain MongoDB yang tidak dibahas pada tulisan kali. Jika ingin belajar lebih silahkan merujuk ke dokumentasi.

Terima Kasih!

--

--