Pada tutorial tentang MongoDB dan PHP yang ditulis sebelumnya
Instalasi dan Konfigirasi https://indratoshare.blogspot.co.id/2017/12/mongodb-dan-php-instalasi-dan.html
Operasi Dasar MongoDB https://indratoshare.blogspot.co.id/2017/12/mongodb-dan-php-operasi-dasar-mongodb.html
Selanjutnya akan diuraikan lebih detail tentang implementasi pemrograman dengan menggunakan platform PHP dan MongoDB, contoh pertama adalah bagaimana cara melakukan koneksi ke database kampus dan mendapatkan statistiknya.
MongoDB\Driver\Manager bertanggungjawab untuk memelihara koneksi ke MongoDB
MongoDB\Driver\Command merepresentasikan sebuah perintah database
dbstats.php
list_database.php
bulkwrite.php
Perintah untuk mengeksekusi query bulk write yang
ditulis sebelumnya.
Instalasi dan Konfigirasi https://indratoshare.blogspot.co.id/2017/12/mongodb-dan-php-instalasi-dan.html
Operasi Dasar MongoDB https://indratoshare.blogspot.co.id/2017/12/mongodb-dan-php-operasi-dasar-mongodb.html
Selanjutnya akan diuraikan lebih detail tentang implementasi pemrograman dengan menggunakan platform PHP dan MongoDB, contoh pertama adalah bagaimana cara melakukan koneksi ke database kampus dan mendapatkan statistiknya.
MongoDB\Driver\Manager bertanggungjawab untuk memelihara koneksi ke MongoDB
MongoDB\Driver\Command merepresentasikan sebuah perintah database
dbstats.php
<?php
try{
$mng
= new MongoDB\Driver\Manager("mongodb://localhost:27017");
$stats
= new MongoDB\Driver\Command(["dbstats" => 1]);
$res
= $mng->executeCommand("local", $stats);
$stats
= current($res->toArray());
print_r($stats);
}catch(MongoDB\Driver\Exception\Exception
$e){
$filename
= basename(__FILE__);
echo
"The $filename script has experienced an error.\n";
echo
"It failed with the following exception:\n";
echo
"Exception: ".$e->getMessage()."\n";
echo
"In file: ".$e->getFile()."\n";
echo
"In line: ".$e->getLine()."\n";
}
?>
$mng = new
MongoDB\Driver\Manager("mongodb://localhost:27017");
Dengan class
MongoDB\Driver\Manager, kita terhubung dengan MongoDB melalui host localhost
port default yang digunakan oleh MongoDB yaitu post 27017
$stats = new MongoDB\Driver\Command(["dbstats" => 1]);
Mongo\Driver\Command digunakan untuk mengeksekusi
perintah dbstats
$stats = current($res->toArray());
Fungsi toArray() mengembalikan array yang berisi semua hasil dan lalu
dicetak melalui fungsi print_r($stats);
Hasilnya seperti dibawah ini:
stdClass Object ( [db] => local [collections]
=> 3 [objects] => 9 [avgObjSize] => 693.33333333333 [dataSize] =>
6240 [storageSize] => 10498048 [numExtents] => 3 [indexes] => 1
[indexSize] => 8176 [fileSize] => 67108864 [nsSizeMB] => 16
[extentFreeList] => stdClass Object ( [num] => 0 [totalSize] => 0 )
[dataFileVersion] => stdClass Object ( [major] => 4 [minor] => 22 )
[ok] => 1 )
Melihat Daftar
Database
Perintah listDatabase
adalah perintah MongoDB yang menyediakan satu daftar dari semua database yang
ada di MongoDB
list_database.php
<?php
try{
$mng
= new MongoDB\Driver\Manager("mongodb://localhost:27017");
$listdatabases
= new MongoDB\Driver\Command(["listDatabases" => 1]);
$res
= $mng->executeCommand("admin", $listdatabases);
$databases
= current($res->toArray());
foreach($databases->databases
as $el){
echo
$el->name."\n";
}
}catch(MongoDB\Driver\Exception\Exception
$e){
$filename
= basename(__FILE__);
echo
"The $filename script has experienced an error.\n";
echo
"It failed with the following exception:\n";
echo
"Exception: ".$e->getMessage()."\n";
echo
"In file: ".$e->getFile()."\n";
echo
"In line: ".$e->getLine()."\n";
}
?>
$listdatabases = new MongoDB\Driver\Command(["listDatabases"
=> 1]);
$res = $mng->executeCommand("admin", $listdatabases);
Kita mengeksekusi perintah listDatabase, perintah ini
dieksekusi oleh database master dari MongoDB yaitu database admin
$databases = current($res->toArray());
Perintah diatas mengembalikan hasil dokumen tunggal,
yang berisi informasi untuk semua database yang ada pada array databases.
foreach($databases->databases as $el){
echo
$el->name."\n";
}
Skrip di atas berfungsi untuk menampilkan daftar
database yang ada di MongoDB. Hasilnya seperti berikut:
kampus
local
Dalam mesin lokal, kita hanya mempunyai dua database
saja, yaitu database kampus dan database local.
Membaca
Data/Seleksi Data
MongoDB\Driver\Query dalah sebuah nilai obyek yang merepresentasikan
sebuah query database. Jika diasosiasikan dengan database relasional, class ini
bertanggung jawab untuk mengeksekusi perintah-perintah SQL seperti select.
read_all.php
<?php
try{
$mng = new MongoDB\Driver\Manager("mongodb://localhost:27017");
$query = new MongoDB\Driver\Query([]);
$rows = $mng->executeQuery("kampus.mahasiswa", $query);
foreach ($rows as $row) {
echo "Nama: ".$row->nama.", IPK: ".$row->ipk.",
Jurusan: ".$row->jurusan."<br>";
}
}catch(MongoDB\Driver\Exception\Exception
$e){
$filename
= basename(__FILE__);
echo
"The $filename script has experienced an error.\n";
echo
"It failed with the following exception:\n";
echo
"Exception: ".$e->getMessage()."\n";
echo
"In file: ".$e->getFile()."\n";
echo
"In line: ".$e->getLine()."\n";
}
?>
Contoh diatas adalah untuk membaca semua data yang
berada pada collection mahasiswa
$query = new MongoDB\Driver\Query([]);
Sebuah obyek baru
dari MongoDB\Driver\Query terbentuk, jika kita melewatkan sebuah array kosong,
maka artinya kita akan melakukan seleksi semua data (select *)
$rows = $mng->executeQuery("kampus.mahasiswa", $query);
Fungsi
executeQuery() bertanggung jawab untuk mengeksekusi query, dimana parameter
pertama adalah menunjuk ke collection mahasiswa dari database kampus
(kampus.mahasiswa) dan parameter kedua adalah query.
foreach ($rows as $row) {
echo "Nama:
".$row->nama.", IPK: ".$row->ipk.", Jurusan:
".$row->jurusan."<br>";
}
Skrip diatas berfungsi untuk menampilkan data dengan
menggunakan metode iterasi foreach, hasilnya adalah sebagai berikut:
Nama: Indro, IPK:
3.3, Jurusan: Teknik Informatika
Nama: Dwi Hayati, IPK: 3.4, Jurusan: Teknik Informatika
Nama: Paino, IPK: 3.2, Jurusan: Teknik Industri
Nama: Paijo, IPK: 3.1, Jurusan: Teknik Industri
Nama: Dwi Hayati, IPK: 3.4, Jurusan: Teknik Informatika
Nama: Paino, IPK: 3.2, Jurusan: Teknik Industri
Nama: Paijo, IPK: 3.1, Jurusan: Teknik Industri
Filtering
Data
Class MongoDB\Driver\Query dapat berisi parameter
filter yang digunakan untuk melakukan penyaringan data, jika di database
relasional asosiasinya adalah WHERE.
filtering.php
<?php
try{
$mng
= new MongoDB\Driver\Manager("mongodb://localhost:27017");
$filter
= ['nama'=>'Indro'];
$query
= new MongoDB\Driver\Query($filter);
$res
= $mng->executeQuery("kampus.mahasiswa", $query);
$mhs
= current($res->toArray());
if
(!empty($mhs)){
echo
"Nama: ".$mhs->nama.", IPK: ".$mhs->ipk.",
Jurusan: ".$mhs->jurusan;
}else{
echo
"No match found";
}
}catch(MongoDB\Driver\Exception\Exception
$e){
$filename
= basename(__FILE__);
echo
"The $filename script has experienced an error.\n";
echo
"It failed with the following exception:\n";
echo
"Exception: ".$e->getMessage()."\n";
echo
"In file: ".$e->getFile()."\n";
echo
"In line: ".$e->getLine()."\n";
}
?>
$filter = ['nama'=>'Indro'];
$query = new MongoDB\Driver\Query($filter);
Skrip diatas akan
melakukan pencarian data mahasiswa berdasarkan kolom nama
$res = $mng->executeQuery("kampus.mahasiswa", $query);
$mhs = current($res->toArray());
if (!empty($mhs)){
echo "Nama: ".$mhs->nama.", IPK: ".$mhs->ipk.",
Jurusan: ".$mhs->jurusan;
}else{
echo "No match
found";
}
Setelah query dengan filter tereksekusi, tampilkan
dengan skrip diatas, dan pastikan terdapat handler jika data yang dicari adalah
kosong alias tidak ditemukan. Dan hasilnya:
Nama: Indro, IPK:
3.3, Jurusan: Teknik Informatika
Projections
Projections
dapat digunakan untuk field tertentu sebagai nilai balik
projection.php
<?php
try{
$filter
= [];
$options
= ["projection"=>['_id' => 0]];
$mng
= new MongoDB\Driver\Manager("mongodb://localhost:27017");
$query
= new MongoDB\Driver\Query($filter, $options);
$rows=
$mng->executeQuery("kampus.mahasiswa", $query);
foreach($rows
as $row){
print_r($row);
}
}catch(MongoDB\Driver\Exception\Exception
$e){
$filename
= basename(__FILE__);
echo
"The $filename script has experienced an error.\n";
echo
"It failed with the following exception:\n";
echo
"Exception: ".$e->getMessage()."\n";
echo
"In file: ".$e->getFile()."\n";
echo
"In line: ".$e->getLine()."\n";
}
?>
Contoh di atas, kita menyembunyikan field pertama
yaitu _id
$options = ["projection"=>['_id' => 0]];
Projections dikhususkan pada sebuah array projection.
Disini kita menyembunyikan field _id.
$query = new MongoDB\Driver\Query($filter, $options);
Projections
dilewatkan pada argumen kedua dari kelas MongoDB\Driver\Query, dan hasilnya:
stdClass Object ( [nama] => Indro [ipk] => 3.3 [jurusan] => Teknik Informatika )
stdClass Object ( [nama] => Nur Hayati [ipk] => 3.4 [jurusan] => Teknik Informatika )
stdClass Object ( [nama] => Paino [ipk] => 3.2 [jurusan] => Teknik Industri )
stdClass Object ( [nama] => Paijo [ipk] => 3.1 [jurusan] => Teknik Industri)
Membatasi Data Keluaran
Perintah ini akan berasosiasi dengan ORDER BY … LIMIT
dalam database relasional
read_limit.php
<?php
try{
$mng
= new MongoDB\Driver\Manager("mongodb://localhost:27017");
$query
= new MongoDB\Driver\Query([], ['sort' => ['name' => 1], 'limit'=>3]);
$rows=
$mng->executeQuery("kampus.mahasiswa", $query);
foreach($rows
as $row){
echo
"Nama: ".$row->nama.", IPK: ".$row->ipk.",
Jurusan: ".$row->jurusan."<br>";
}
}catch(MongoDB\Driver\Exception\Exception
$e){
$filename
= basename(__FILE__);
echo
"The $filename script has experienced an error.\n";
echo
"It failed with the following exception:\n";
echo
"Exception: ".$e->getMessage()."\n";
echo
"In file: ".$e->getFile()."\n";
echo
"In line: ".$e->getLine()."\n";
}
?>
$query = new MongoDB\Driver\Query([], ['sort' => ['name' => 1],
'limit'=>3]);
Perintah diatas
maksudnya adalah menampilkan data mahasiswa dengan urut berdasarkan nama secara
terurut membesar (ascendent) dan hanya dibatasi sebanyak 3 data/baris saja.
Bulk Write
Metode MongoDB\Driver\Manager::executeBulkWrite
mengeksekusi satu atau lebih operasi penulisan termasuk insert, update dan
delete data.bulkwrite.php
<?php
try{
$mng
= new MongoDB\Driver\Manager("mongodb://localhost:27017");
$bulk
= new MongoDB\Driver\BulkWrite;
$doc
= ['_id'=>new MongoDB\BSON\ObjectID, 'nama'=>'Lewis Hamilton',
'ipk'=>3.1, 'jurusan'=>'Teknik Mesin'];
$bulk->insert($doc);
$bulk->update(['nama'
=> 'Indri'], ['$set' => ['jurusan'=>'Teknik Informatika2']]);
$bulk->delete(['nama'
=> 'Valentino Rossi']);
$mng->executeBulkWrite('kampus.mahasiswa',
$bulk);
//Show
table after changes
$query
= new MongoDB\Driver\Query([]);
$rows = $mng->executeQuery("kampus.mahasiswa", $query);
foreach ($rows as $row) {
echo "Nama:
".$row->nama.", IPK: ".$row->ipk.", Jurusan:
".$row->jurusan."<br>";
}
}catch(MongoDB\Driver\Exception\Exception
$e){
$filename
= basename(__FILE__);
echo
"The $filename script has experienced an error.\n";
echo
"It failed with the following exception:\n";
echo
"Exception: ".$e->getMessage()."\n";
echo
"In file: ".$e->getFile()."\n";
echo
"In line: ".$e->getLine()."\n";
}
?>
$doc = ['_id'=>new MongoDB\BSON\ObjectID, 'nama'=>Ponijah',
'ipk'=>3.01, 'jurusan'=>'Teknik Mesin'];
$bulk->insert($doc);
Perintah untuk
melakukan insert data. New MongoDB\BSON\ObjectID digunakan untuk melakukan
generate ID pada kolom _id.
$bulk->update(['nama' => 'Nur Hayati'], ['$set' =>
['jurusan'=>'Teknik Informatika2']]);
Perintah untuk
melakukan update data pada kolom jurusan menjadi “Teknik Informatika2”
berdasarkan (where) nama=’Nur Hayati”
$bulk->delete(['nama' => 'Paijo']);
Perintah untuk
melakukan delete data berdasarkan kriteria (where) nama=’Paijo’
$mng->executeBulkWrite('kampus.mahasiswa', $bulk);
MongoDB dan PHP – Pemrograman Dasar
Reviewed by Indrato
on
4:42 PM
Rating:
No comments: