Archive Pages Design$type=blogging$count=7

MongoDB dan PHP – Pemrograman Dasar

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


<?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

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);

Perintah untuk mengeksekusi query bulk write yang ditulis sebelumnya.
MongoDB dan PHP – Pemrograman Dasar MongoDB dan PHP – Pemrograman Dasar Reviewed by Indrato on 4:42 PM Rating: 5

No comments:

Powered by Blogger.