dalam materi belajar kali ini di asumsikan telah mengenal MongoDB, jadi tidak membahas apa itu mongoDB atau apa itu NoSQL.

ini beberapa link sebagai persiapan:
Install MongoDB
MongoDB PHP Driver

Koneksi Database

MySQL

$host = 'localhost';
$user = 'root';
$pass = '';

$link = mysql_connect($host,$user, $pass, 1) or die("Gagal koneksi ke: {$host}. cek lagi setingannya dan coba lagi.");

MongoDB

try
{
	$link = new Mongo();
}
catch(MongoConncetionException $e)
{
	die("Koneksi Gagal. cek untuk memastikan MongoDB nya jalan");
}


Membuat dan menggunakan Database

MySQL

$db = 'cobadb';
$sql = "CREATE DATABASE '$db'";

mysql_query($sql,$link);
mysql_select_db($db,$link);

MongoDB

$db = $link->cobadb;

Di MongoDB akan membuat Database secara otomatis jika belum ada.

Membuat Tabel atau Collection
MySQL

// membuat table
$tbl = 'user';
$sql = "CREATE TABLE `$tbl` (`id` INT NOT NULL AUTO INCREMENT PRIMARY KEY, `login` VARCHAR (24) NOT NULL, `password` CHAR(32) NOT NULL, `email` VARCHAR(255)) TYPE=innodb;";
mysql_query($sql,$link);

MongoDB

// membuat collection (table)
$col = $db->user;

MongoDB akan secara otomatis membuat sesuatu jika belum ada. dalam contoh ini membuat table “user”. kita tidak perlu mendefinisikan format table/collection dalam MongoDB. ini yang disebut sebagai schema-less dan tidak membutuhkan definisi kolom. “Tabel” dalam MongoDB disebut dengan “Collections”.

Input Data
Mysql

// Input data ke table
$sql = "INSERT INTO `$tbl` SET `login` = 'coba1', `password` = '0c50a2d250b30bf01aa0fabf782cb448', `email` = '[email protected]'";
mysql_query($sql);

$sql = "INSERT INTO `$tbl` SET `login` = 'coba2', `password` = '0c50a2d250b30bf01aa0fabf782cb448', `email` = '[email protected]'";
mysql_query($sql);

// mengambil ID terkahir di inputkan
$id = mysql_insert_id($link);

MongoDB

// Input documment ke dalan Collection
$doc = array('login' => 'coba1', 'password' => '0c50a2d250b30bf01aa0fabf782cb448', 'email' => [email protected]');
$col->insert($doc,true);

$doc = array('login' => 'coba2', 'password' => '0c50a2d250b30bf01aa0fabf782cb448', 'email' => [email protected]');
$col->insert($doc,true);

// mengambil ID terkahir di inputkan
$id = $doc['_id'];

di sini kita menggunakan array untuk mendefinisikan “row” data, yang disebut dengan “doccument”. pada metode input, argumen kedua untuk mnggunakan query dalam mode “safe insert”. hal ini untuk memungkinkan kita mengetahui apakah perintahnya di eksekusi dengan baik. jika tidak di set, maka tidak akan mendapatkan informasi tersebut. kita set ke “true” untuk debug mode. untuk password itu adalah hash MD5 untuk “sinaryuda”.

Query Data
MySQL

// mengambil semua baris
$sql = "SELECT * FROM `$tbl`";
$qry = mysql_query($sql,$link);
$cnt = mysql_num_rows($qry);
echo 'Semua baris:';
if ($cnt > 0)
{
do {
$row = $mysql_fetch_assoc($qry);
echo '<pre>';
print_r($row);
echo '</pre>';
}
}
// Query untuk baris yang sesuai dengan ID terakhir di input
$sql = "SELECT * FROM `$tbl` WHERE `id` = {$id}";
$qry = mysql_query($sql,$link);
$row = mysql_fetch_assoc($qry);
echo 'Baris id : $id';
echo '<pre>';
print_r($row);
echo '</pre>';

MongoDB

// Mengambil Semua Documment
$res = $col->find();
echo 'Semua Document :';
foreach($res as $doc)
{
echo '<pre>';
print_r($doc);
echo '</pre>';
}
// Query untuk document yang sesuai dengan ID terakhir di input
$doc = $col->findone(array('_id' => $id));
echo 'document _id : $id';
echo '<pre>';
print_r($doc);
echo '</pre>';

mongoDB mendukung PHP dengan function untuk menarik satu atau semua document. di dalam mongoDB kita menggunakan array untuk mendefinisikan sesuatu. dalam contoh kita mendifiniskan pembatasan untuk _id tertentu.

Update Data
MySQL

$sql = "UPDATE `$tbl` SET `password` = '5f4dcc3b5aa765d61d8327deb882cf99' WHERE `id` = {$id}";
$qry = mysql_query($sql,$link);
$sql = "SELECT * FROM `$tbl` WHERE `id` = {$id}";
$qry = mysql_query($sql,$link);
$row = mysql_fetch_assoc($qry);
echo 'Update baris id = $id :';
echo '<pre>';
print_r($row);
echo '</pre>';

MongoDB

// Update Documment
$col->update(array('_id' => $id), array('$set' => array('password' => '5f4dcc3b5aa765d61d8327deb882cf99')));
// Query document yang di update
$doc = $col->findone(array('_id'=>$id));
echo 'Updated document: <br /><pre>';
print_r($doc);
echo '</pre>';

MongoDB PHP Driver memiliki fungsi update. parameter pertama adalah array dari pembatasan, seperti “WHERE {expresi}”. pada parameter kedua adalah data yang akan kita ubah.

Indexing Data
MySQL

// membuat sebuah index unique
$sql = "ALTER TABLE `$db`.`$tbl` ADD UNIQUE `login` (`login`)";
$qry = mysql_query($sql,$link);

MongoDB

// membuat sebuah index unique
$col->ensureIndex(array("login" => 1),array("unique" => true, "dropDups" =>true));

MongoDB memiliki method untuk membuat index degan nama “ensureIndex”. parameter pertama adalah sebuah array yang ingin kita index dan nilai antara 1 dan -1. 1 berarti index akan diurutkan secara ascending, sedangkan -1 akan diurutkan secara descending. parameter kedua berupa opsi tambahan. dalam contoh ini membuat index unique dengan menghapus semua document yang data dalam kolom “login” kembar. sebagai catatan kolom dalam MongoDB disebut juga dengan “elements”.

setelah membuat index mari kita coba untuk memastikan indexnya berfungsi.

MongoDB

// tes unique index
try
{
$doc = array('login' => 'coba1', 'password' => '5f4dcc3b5aa765d61d8327deb882cf99', 'email' => [email protected]');
$col->insert($doc, true);
} catch(MongoCursorException $e)
{
echo 'Tidak boleh input document kembar';
}

jika berhasil maka akan muncul pesan error.

Membatasi Hasil Query
MySQL

// Limit
$sql = "SELECT * FROM `$tbl` LIMIT 1";
$qry = mysql_query($sql,$link);
$cnt = mysql_num_rows($qry);
echo 'Semua baris - limit by 1 :';
if ($cnt >0)
{
do {
$row = mysql_fetch_assoc($qry);
echo '<pre>';
print_r($row);
echo '</pre>';
}
}

MongoDB

// Limit
$res = $col->find()->limit(1);
echo 'Semua documment - limit to 1:';
foreach($res as $doc)
{
echo '<pre>';
print_r($doc);
echo '</pre>';
}

Offseting
MySQL

// Limit
$sql = "SELECT * FROM `$tbl` OFFSET 1 LIMIT 1";
$qry = mysql_query($sql,$link);
$cnt = mysql_num_rows($qry);
echo 'Semua baris - limit by 1 - Offset by 1 :';
if ($cnt >0)
{
do {
$row = mysql_fetch_assoc($qry);
echo '<pre>';
print_r($row);
echo '</pre>';
}
}

MongoDB

// Limit
$res = $col->find()->skip(1)->limit(1);
echo 'Semua documment - limit to 1, offset by 1:';
foreach($res as $doc)
{
echo '<pre>';
print_r($doc);
echo '</pre>';
}

untuk offset dengan menggunakan method “skip” dengan nilai integer.

Pengurutan (Sorting)
MySQL

// Sorting
$sql = "SELECT * FROM `$tbl` ORDERBY `login` DESC";
$qry = mysql_query($sql, $link);
$cnt = mysql_num_rows($qry);
echo 'Semua baris -  diurutkan berdasarkan login secara descending:';
if($cnt > 0)
{
do
{
$row = mysql_fetch_assoc($qry);
echo '<pre>';
print_r($row);
echo '</pre>';
}while(--$cnt > 0);
}

MongoDB

// Sorting
$res = $col->find()->sort(array('login' => -1));
echo 'Semua document -  diurutkan berdasarkan login secara descending:';
foreach($res as $doc)
{
echo '<pre>';
print_r($doc);
echo '</pre>';
}

di sini kita menggunakan method “sort” dengan parameter element mana yang digunakan dalam pengurutan dan berdasarkan apa, -1 untuk descending dan 1 untuk ascending.

Query Kompleks
MySQL

// query Kompleks
// Menambah komlom Baru
$sql = "ALTER `$db`.`$tbl` ADD COLUMN `age` INT UNSIGNED";
mysql_query($sql, $link);
// Menambah Nilai
$sql = "UPDATE `$tbl` SET `age` = 40 WHERE `login` = 'coba1'";
mysql_query($sql, $link);
$sql = "UPDATE `$tbl` SET `age` = 24 WHERE `login` = 'coba2'";
mysql_query($sql, $link);
// Query untuk semua dengan umur dibawah 30
$sql = "SELECT * FROM `$tbl` WHERE `age` < 30";
$qry = mysql_query($sql, $link);
$cnt = mysql_num_rows($qry);
echo 'Semua baris - Semua dibawah 30:';
if($cnt > 0)
{
do
{
$row = mysql_fetch_assoc($qry);
echo '<pre>';
print_r($row);
echo '</pre>';
}
}
// Query untuk semua lebih dari 30
$sql = "SELECT * FROM `$tbl` WHERE `age` > 30";
$qry = mysql_query($sql, $link);
$cnt = mysql_num_rows($qry);
echo 'Semua baris - semuanya labih dari 30:';
if($cnt > 0)
{
do
{
$row = mysql_fetch_assoc($qry);
echo '<pre>';
print_r($row);
echo '</pre>';
}
}
// Query dari semuanya sama dengan atau lebih dari 25
$sql = "SELECT * FROM `$tbl` WHERE `age` >= 25";
$qry = mysql_query($sql, $link);
$cnt = mysql_num_rows($qry);echo 'Semua baris - Semuanya sama dengan atau lebih dari 25:';
if($cnt > 0)
{
do
{
$row = mysql_fetch_assoc($qry);
echo '<pre>';
print_r($row);
echo '</pre>';
}
}
// Query dari semuanya sama dengan atau kurang dari 25
$sql = "SELECT * FROM `$tbl` WHERE `age` <= 25";
$qry = mysql_query($sql, $link);
$cnt = mysql_num_rows($qry);echo 'Semua baris - semuanya sama dengan atau kurang dari 25:';
if($cnt > 0)
{
do
{
$row = mysql_fetch_assoc($qry);
echo '<pre>';
print_r($row);
echo '</pre>';
}
}
// Query untuk semua tidak sama dengan 40
$sql = "SELECT * FROM `$tbl` WHERE `age` != 40";
$qry = mysql_query($sql, $link);
$cnt = mysql_num_rows($qry);echo 'semua baris - tidak sama dengan 40:';
if($cnt > 0)
{
do
{
$row = mysql_fetch_assoc($qry);
echo '<pre>';
print_r($row);
echo '</pre>';
}
}
// Query untuk semua antara 20-50
$sql = "SELECT * FROM `$tbl` WHERE `age` >= 20 AND `age` <= 50";
$qry = mysql_query($sql, $link);
$cnt = mysql_num_rows($qry);
echo 'Semua baris - antara 20-50:';
if($cnt > 0)
{
do
{
$row = mysql_fetch_assoc($qry);
echo '<pre>';
print_r($row);
echo '</pre>';
}
}

MongoDb

// queries kompleks
// menambah element baru dan nilai
$col->update(array('login' => 'coba1'), array('$set' => array('age' => 40)));
$col->update(array('login' => 'coba2'), array('$set' => array('age' => 24)));
// cek
$res = $col->find();
echo 'semua documents - penambahan element age:';
foreach($res as $doc)
{
echo '<pre>';
print_r($doc);
echo '</pre>';
}
// Query untuk semua dibawah 30
$res = $col->find(array('age' => array('$lt' => 30)));
echo 'semua documents - dibawah 30:';
foreach($res as $doc)
{
echo '<pre>';
print_r($doc);
echo '</pre>';
}
// Query untuk semua diatas 30
$res = $col->find(array('age' => array('$gt' => 30)));
echo 'semua documents - diatas 30:';
foreach($res as $doc)
{
echo '<pre>';
print_r($doc);
echo '</pre>';
}
// Query untuk semua sama dengan 25 atau lebih

$res = $col->find(array('age' => array('$gte' => 25)));
echo 'semua documents - sama dengan 25 atau lebih:';
foreach($res as $doc)
{
echo '<pre>';
print_r($doc);
echo '</pre>';
}

// Query untuk semua sama dengan 25 atau kurang
$res = $col->find(array('age' => array('$lte' => 25)));
echo 'semua documents - sama dengan 25 atau kuran:';
foreach($res as $doc)
{
echo '<pre>';
print_r($doc);
echo '</pre>';
}
// Query untuk semua tidak sama dengan 40
$res = $col->find(array('age' => array('$ne' => 40)));echo 'semua documents - tidak sama dengan 40:';
foreach($res as $doc)
{
echo '<pre>';
print_r($doc);
echo '</pre>';
}
// Query untuk semua antara 20-50
$res = $col->find(array('age' => array('$gte' => 20, '$lte' => 50)));
echo 'semua documents - antara 20-50:';
foreach($res as $doc)
{
echo '<pre>';
print_r($doc);
echo '</pre>';
}

Dengan MongoDB dapat digunakan operator kondisional “<,<=,>,>=” pada query. operator kondisional versi mongoDB “$lt” (less than), “$lte” (less than or equal), “$gt” (greater than), “$gte” (greater than or equal). operator kondisional lainnya “$ne” (not equal), “$in”(seperti MySQL IN), “$nin” (not In), “$mod” (modulo operation), “$all” (like in tetapi semua nilai harus sama dengan document), “$size” (sesuai nomor elemet), “$exists” (element ada), “$type” (sesuai type element – int, string, etc). dan banyak lainnya.

Hapus sebuah Baris / Document
MySql

// hapus baris
$sql = "DELETE FROM `$tbl` WHERE `$login` = 'coba1'";
mysql_query($sql,$link);

MongoDB

// Hapus sebuah document
$col->remove(array('age'=>24),array('justOne'=>true,'safe'=>true));
//cek
$res = $col->find();
echo 'semua document:';
foreach($res as $doc)
{
echo '<pre>';
print_r($doc);
echo '</pre>';
}

disini menggunakan method “remove”. paramater pertama sebagai batasan dan parameter kedua hanya menghapus satu item dan juga dalam mode safe query.

Menghapus Tabel atau Collection
MySQL

// Drop table
$sql = "DROP TABLE `$db`.`$tbl`";
mysql_query($sql, $link);

MongoDB

// Drop collection
$col->drop();

Menghapus Database
MySQL

// Drop DB
$sql = "DROP DATABASE `$db`";
mysql_query($sql, $link);

MongoDB

// Drop DB
$db->drop();

Disconnect
MySQL

// Disconnect
mysql_close($link);

MongoDB

// Disconnect
$link->close();

Sampai jumpa lain waktu, happy coding
bersambung…

Incoming search terms: