WHAT'S NEW?
Loading...

Tutorial MongoDB: Mengoperasikan MongoDB - Part 2

Tutorial MongoDB: Mengoperasikan MongoDB - Part 2

Langkah awal yang diperlukan sebelum memulai menggunakan MongoDB yaitu mendownload dan menginstallnya. Dalam hal ini saya menggunakan Linux Debian sebagai wadahnya dan menginstallnya langsung dari repository dengan perintah "sudo apt-get install mongodb". Namun jika anda ingin memilih versi tertentu bisa langsung mengunjungi download center MongoDB.

Lakukan proses installasi hingga selesai kemudian ketikkan perintah berikut pada terminal untuk menjalankan MongoDB:
$ sudo mkdir -p /data/db; sudo chown `id -u` /data/db
$ mongod
Atau bisa juga langsung menggunakan perintah:
$ sudo systemctl start mongodb
Dari semua langkah diatas, bila tidak ada error berarti MongoDB sukses dijalankan.

MongoDB Shell

MongoDB datang dengan JavaScript shell yang memungkinkan interaksi dengan operasi atau perintah-perintah dari MongoDB. Untuk masuk kedalam shell cukup mudah, ketikkan perintah "mongo" maka kita akan langsung masuk kedalam shell, seperti contoh gambar berikut.
Tutorial MongoDB: Mengoperasikan MongoDB - Part 2

Karena MongoDB shell didukung full-feature JavaScript interpreter (penerjemah bahasa javascript), kita dapat melakukan coding langsung didalam shell, semisal saya membuat sebuah fungsi sederhana dengan JavaScript dan menjalankannya seperti gambar berikut.
Tutorial MongoDB: Mengoperasikan MongoDB - Part 2

Operasi dasar dengan Shell

Kita bisa menggunakan 4 dasar operasi seperti create, read, update, delete (CRUD) untuk memanipulasi dan melihat data didalam shell. Perlu untuk diketahui bahwa tidak ada penggunaan query relational database dalam NoSQL, melainkan menggunakan metode untuk menggantikannya.

Create

Merupakan fungsi insert document ke dalam collection. Semisal kita ingin membuat blog post, pertama kita buat lokal variabel "post" yang merupakan JavaScript object dengan berisikan data sebagai berikut:
> use blog <== secara otomatis membuat dan masuk kedalam database blog
> post = {
... "title" : "Judul Postingan",
... "content" : "Isi paragraf",
... "date" : new Date()} [tekan enter]
Kemudian kita bisa menyimpan data tersebut dengan menggunakan metode insert()  dan melihat data yang sudah tersimpan metode find(). Jika berhasil maka hasilnya akan terlihat seperti gambar berikut.
Tutorial MongoDB: Mengoperasikan MongoDB - Part 2

Dari gambar diatas terlihat bahwa data berhasil tersimpan, dan juga terdapat data baru berupa _id yang merupakan special key. Mengenai special key akan saya jelaskan dibagian lain.

Read

Fungsi read dalam MongoDB bisa menggunakan 2 metode yaitu find() dan findOne(). Cara penggunaannya sama dengan contoh sebelumnya, cukup mengganti nama metode yang digunakan.

Update

Untuk melakukan modifikasi dalam collection, kita perlu menggunakan metode update(). Dalam penggunaannya, metode update membutuhkan 2 parameter berupa document yang mau diupdate dan data baru yang akan dimasukkan. Contohnya masih menggunakan data sebelumnya, kita akan coba menambahkan key baru dengan nama comments dan menampung nilainya dalam array. Dalam JavaScript object dikenal istilah pasangan key/value dengan bentuk seperti:
{ key : "value" }
Kita akan memodifikasi variabel post dan menambahkan key dengan nama comments:
> post.comments = [] [tekan enter]
Kemudian kita lakukan update untuk postingan dengan title "Judul Postingan" dengan data document baru dengan perintah:
> db.blog.update({title: "Judul Postingan"}, post)
Kemudian periksa dengan metode find() jika berhasil maka akan ada key baru didalam document tersebut.

Delete

Menghapus document cukup menggunakan metode remove(). Untuk menghapus seluruh document dari collection cukup panggil tanpa menggunakan parameter, tetapi jika ingin menghapus document tertentu maka gunakan parameter. Seperti contoh berikut saya akan menghapus document dengan title "Judul Postingan".
> db.blog.remove({title: "Judul Postingan"})

Itulah beberapa operasi dasar dalam menggunakan MongoDB, bisa dibilang jauh berbeda dengan database yang umum kita gunakan. Meskipun begitu sangat menarik untuk mempelajari teknologi baru untuk menambah wawasan. Selamat mencoba dan silakan baca bagian lainnya.

Part 1: Tutorial MongoDB: Pengenalan MongoDB - Part 1
Part 2: Tutorial MongoDB: Mengoperasikan MongoDB - Part 2
Part 3: Tutorial MongoDB: Tipe Data MongoDB - Part 3
Part 4: Tutorial MongoDB: Tipe Data MongoDB (Tambahan) - Part 4
Part 5: Tutorial MongoDB: Dasar MongoDB Shell - Part 5
Part 6: Tutorial MongoDB: Operasi CRUD - Part 6

Tutorial MongoDB: Pengenalan MongoDB - Part 1

Tutorial MongoDB: Pengenalan MongoDB - Part 1

MongoDB adalah document-oriented database, dan bukan merupakan relational database atau biasa dikenal dengan nama NoSQL. Sebuah document-oriented database yang dimaksud ialah database yang menggantikan konsep "row" dengan model yang lebih fleksibel yaitu "document".

MongoDB dibuat dengan tujuan untuk digunakan sebagai database pada umumnya, jadi selain fitur umum seperti create, read, update, dan delete data tersedia juga fitur unik yang tersedia diantaranya yaitu: Indexing, Aggregation, Special collection types, File storage.

Dalam tiap-tiap bagian tutorial yang akan saya buat kita akan mengenal konsep dasar dari MongoDB. Untuk langkah awal kita akan mengenal dasar seperti:
  • Sebuah document adalah sama dengan row dari relational database
  • Sebuah collection adalah sama dengan table 
  • Database collection

Document

Document bisa dikatakan sebagai jantungnya MongoDB. Representasi dari dari sebuah document bervariasi untuk setiap bahasa pemrograman. Untuk contohnya, dalam JavaScript sebuah document direpresentasikan sebagai object:
{"show" : "Hello, world!"}
Contoh object diatas berisi sebuah key, "show" dengan nilai yaitu "Hello, world!". Dari contoh object diatas hanya memiliki single key/value, tentunya kita bisa memiliki banyak pasangan key/value dengan memisahkannya menggunakan tanda koma (,):
{"show" : "Hello, world!", "foo" : 3}
Perlu untuk diketahui bahwa document-object disini bersifat case-sensitive jadi perlu untuk lebih teliti saat membuatnya.

Collection

Collection adalah grup dari kumpulan document. Jika sebuah document MongoDB dianalogikan sebagai sebuah "row" dalam relasional database, maka collection dapat juga dianalogikan sebagai table dalam relasional database.
Collection memiliki dynamic schema, yang berarti kalau document dalam sebuah collection dapat memiliki bentuk yang berbeda, misalnya:
{"greeting" : "Hello, world!"} {"foo" : 5}
Document diatas dapat disimpan dalam sebuah collection, dan juga document tersebut bisa memiliki type data yang berbeda pula seperti contoh diatas yang terdiri dari string dan integer. Disamping itu, Collection mendukung format Subcollection yang dapat menjadikan data collection lebih terstruktur.

Database

MongoDB mengelompokkan collection ke dalam database. Sebuah database memiliki "permission" tersendiri dan setiap database disimpan menjadi bentuk file didalam disk. MongoDB sudah memiliki beberapa database yang telah tersedia secara default sehingga kita tidak bisa membuat nama database yang sama yaitu: admin, local, config. Ketiga database itu bisa dikatakan sebagai database special karena berisikan informasi dari pengoperasian MongoDB.

Itulah beberapa penjelasan dari dasar MongoDB. Masih banyak lagi fitur yang bisa diketahui dengan langsung mencobanya ataupun memeriksa berbagai macam fitur dan fungsi melalui official documentasi dari MongoDB.

Part 1: Tutorial MongoDB: Pengenalan MongoDB - Part 1
Part 2: Tutorial MongoDB: Mengoperasikan MongoDB - Part 2
Part 3: Tutorial MongoDB: Tipe Data MongoDB - Part 3
Part 4: Tutorial MongoDB: Tipe Data MongoDB (Tambahan) - Part 4
Part 5: Tutorial MongoDB: Dasar MongoDB Shell - Part 5
Part 6: Tutorial MongoDB: Operasi CRUD - Part 6

Tutorial Cara Menggunakan Socket.IO dan Express

Tutorial Cara Menggunakan Socket.IO dan Express

Perkembangan teknologi web sudah semakin cepat, terlebih lagi pada perkembangan teknologi JavaScript. Kali ini saya akan sedikit membahas salah satu framework yang populer yaitu ExpressJS.

Berawal dari rasa penasaran dengan real time web application saya mulai mencobanya langsung dan mencari tahu dan akhirnya menemukan salah satu real time engine yang biasa digunakan dalam membangun real time web application yaitu Socket.io. Pada saat proses implementasinya saya menemukan masalah yang ternyata package socket.io tidak bisa langsung digunakan layaknya package aplikasi Node JS lainnya.

Dari hasil googling saya menemukan bahwa "Socket.io does not work with routes it works with sockets.". Lantas hal ini bukan berarti bahwa kita tidak bisa menggunakannya, tetapi yang perlu dilakukan yaitu modifikasi.

Mungkin dengan mencari keyword "Socket.io express" di google anda akan menemukan banyak artikel yang sudah menyertakan bagaimana cara modifikasi agar Socket.io bisa digunakan dalam aplikasi Express JS, dan saya juga akan menuliskan cara modifikasi yang saya sudah temukan dan berhasil berfungsi dalam aplikasi (cara ini berdasarkan hasil googling).

Saya menggunakan Express generator untuk membuat aplikasi Node JS. Pastikan sudah menginstall Node JS terlebih dahulu dan kemudian lakukan proses instalasi Express Generator dengan perintah berikut:
$ npm install express-generator
Kemudian buat project (saya ingin menggunakan handlebars sebagai template engine, gunakan --hbs) baru dengan perintah berikut:
$ express socketio-express --hbs
Lalu masuk ke direktori aplikasi install dependencies project yang baru dibuat:
$ cd socketio-express; npm install
Karena Socket.io merupakan package eksternal maka kita perlu menginstallnya, cukup dengan menjalankan perintah npm install socket.io tunggu hingga selesai.

Berikut ini daftar dependencies yang saya gunakan dalam contoh ini:
{
     "name": "socketio",
     "version": "0.0.0",
     "private": true,
     "scripts": {
          "start": "node ./bin/www"
     },
     "dependencies": {
          "body-parser": "~1.15.1",
          "cookie-parser": "~1.4.3",
          "debug": "~2.2.0",
          "express": "~4.13.4",
          "hbs": "~4.0.0",
         "morgan": "~1.7.0",
         "serve-favicon": "~2.3.0",
         "socket.io": "^1.7.2"
     }
}
Dari sini mari kita mulai proses modifikasi. Langkah pertama buka file app.js dan tambahkan 3 baris code berikut ini:
var socketio = require('socket.io');

var app = express();

// Socket.io
var io = socketio();
app.io = io;

// app.use('/', routes);
app.use('/', require('./routes/index')(app.io));
Cukup sampai disini, lalu simpan file tersebut. Lanjut langkah kedua, buka file bin/www dan tambahkan code berikut ini:
/**
* Create HTTP server.
*/

var server = http.createServer(app);

/**
* Socket.io
*/
var io = app.io;
io.listen(server);
Kemudian simpan lagi file tersebut. Kita lanjut ke langkah ketiga, buka file routes/index.js dan modifikasi menjadi seperti code dibawah ini:
// ====== change all this code to =======
// var express = require('express');
// var router = express.Router();

/* GET home page. */
// router.get('/', function(req, res, next) {
//      res.render('index', { title: 'Express' });
// });

// module.exports = router;

// ====== the following code =======
module.exports = function(io) {
//now you can use io.emit() in this file
var express = require('express');
var router = express.Router();

/* GET home page. */
router.get('/', function(req, res, next) {
     res.render('index', { title: 'Express' });
});
io.on('connection', function (socket) {
     socket.emit('news', { hello: 'world' });
     socket.on('my other event', function (data) {
          console.log(data);
     });
     console.log('A client connection occurred!');
});
     return router;
}
Lanjut ke langkah terakhir, buka file views/index.hbs dan modifikasi script seperti dibawah ini:
src="/socket.io/socket.io.js" // javascript tag source link
// socket.io in javascript tag
var socket = io();
socket.on('news', function (data) {
     console.log(data);
     socket.emit('my other event', { my: 'data'});
})

Setelah semua langkah ini dilakukan, mari kita coba jalankan aplikasinya dan jika berhasil akan tampak hasil seperti gambar berikut.
Tutorial Cara Menggunakan Socket.IO dan Express
Click to zoom
Dari hasil gambar diatas menunjukkan bahwa aplikasi berjalan dengan lancar dan juga socket.io yang digunakan juga berfungsi dengan baik tanpa adanya error, dengan begitu kita dapat membuat aplikasi yang kita inginkan dengan menggunakan socket.io. Jika ada yang ingin ditanyakan ataupun mengkoreksi code diatas, silakan isi kolom komentar dibawah. Happy coding..