lifelong learner — urip iku urup, currently working on accenture.

mongodb – perintah dasar 3/5 (querying)

0
Degananda.com -

Query adalah sebuah bahasa yang digunakan untuk menentukan/membatasi row yang akan ditampilkan dari suatu tabel atau jika konteksnya adalah mongodb maka bahasa yang digunakan untuk menentukan/membatasi dokumen yang akan ditampilkan dari suatu collections.

Peranan query sangat penting didalam sebuah database. Banyak bisnis proses yang membutuhkan query didatabase. Tanpa adannya query kita tidak dapat menyajikan informasi yang seusai dengan kondisi. Pada ulasan kali ini akan dibahas mengenai penggunaan query yang ada pada mongodb.

Jika anda belum membaca dua bagian mengenai perintah dasar mongodb maka kami anjurkan untuk membaca dua part tersebut agar mudah dalam memahami ulasan ini. Berikut ini adalah link untuk membaca mengenai perintah dasar mongodb bagian kedua.

Mongodb – perintah dasar part 2/5

layaknya pada RDBMS mongodb memilki berbagai jenis query yang dapat membantu kita membuat sebuah aplikasi ataupun untuk menyelesaikan suatu bisnis proses tertentu. Proses query ini akan melimitasi (membatasi) dokumen-dokumen yang akan tampil dari satu atau gabungan dari beberapa collection. Tujuannya adalah untuk menampilkan dokumen yang sesuai dengan kondisi/tujuan yang ingin dicapai. Contohnya kita ingin menampilkan dokumen mengenai history transaksi yang memiliki nilai transaksi mulai dari 1 juta rupiah hingga 5 juta rupiah maka penggunaan query “less than” ataupun “more than” dapat digunakan untuk menyelesaikan kasus tersebut.

Penggunaan query yang akan dipelajari pada ulasan ini mencakup pada beberapa kondisi yang terjadi dalam kita membuat suatu “program”  / web services yaitu :

  1. query pada dokumen biasa (part-3)
    maksudnya adalah query yang dilakukan di satu collection secara biasa dan field yang dilakukan proses query tidak memiliki tipe array melainkan tipe-tipe biasa seperti string/ integer/number/date dan lain sebagainnya.
  2. query pada dokumen yang berupa array (part-3)
  3. query pada dokumen embedded document (part-4)
  4. query pada array yang berada di embedded document (part-4).

sehingga diharapkan nantinnya kita dapat membuat query pada berbagai kondisi. Dokumen yang akan digunakan pada ulasan ini adalah sebagai berikut (silahkan eksekusi perintah dibawah ini atau anda dapat menggunakan data anda sendiri).

db.note.insert([
    {
        "judul_note" : "kimia",
        "isi_note" : "tabel periodik",
        "tanggal_note" : new Date("2017-02-05"),
        "materi" : ['gol 2A', 'gol 2B', 'gol transisi']
    },
    {
        "judul_note" : "fisika",
        "isi_note" : "hukum newton",
        "tanggal_note" : new Date("2017-08-05"),
        "materi" : ['hukum newton I', 'hukum newton II', 'hukum newton III']
    },
    {
        "judul_note" : "matematika",
        "isi_note" : "bangun ruang",
        "tanggal_note" : new Date("2017-11-23"),
        "materi" : ['tabung', 'kubus', 'volume']
    }
])

kode tersebut akan menghasilkan tiga buah dokumen yang ditambahkan di collection bernama note. Anda dapat menggunakan collection anda sendiri.

data inilah yang akan digunakan pada pembahasan mengenai query pada dokumen (normal) dan pada field array. Untuk query mengenai embedded document akan di bahas lebih lanjut pada bagian ke-4 dari ulasan mengenai perintah dasar mongodb.

1. Query pada dokumen (normal).

1.1 Menampilkan seluruh data

untuk menampilkan seluruh data perintah yang digunakan adalah

db.note.find()

1.2 Menampilkan dokumen berdasarkan nilai equality (“=”)

Contohnya adalah kita akan menampilkan data dengan judul note berupa “matematika”. maka perintah yang digunakan adalah


db.note.find({"judul_note":"matematika"})

{“val”:”val”} pada perintah find() dinamakan sebagai query filter document. Berdasarkan perintah diatas maka hanya dokumen matematika yang akan muncul

1.3 Menampilkan dokumen dengan query operator (comparasion)

mongodb memiliki banyak query operator. diantarannya adalah

$eq alias dari equal , menampilkan dokumen berdasarkan nilai sama dengan (equal) pada field tertentu.
$gt menampilkan dokumen berdasarkan nilai yang lebih besar pada field tertentu
$gte menampilkan dokumen berdasarkan nilai yang lebih besar atau sama dengan pada field tertentu
$lt menampilkan dokumen berdasarkan nilai yang kurang dari pada field tertentu
$lte menampilkan dokumen berdasarkan nilai yang kurang dari atau sama dengan pada field tertentu
$ne menampilkan dokumen berdasarkan nilai yang tidak sama pada field tertentu
$in menampilkan dokumen berdasarkan nilai yang ada pada array (lihat contoh dibawah untuk lebih jelasnya).
$nin menampilkan dokumen berdasarkan nilai yang tidak ada pada
array

kita dapat memanfaatkan query opeator pada query filter document contohnya pada perintah find().

1.3.1 Query opeator : $eq

menampilkan note yang memiliki nilai field “judul_note” equal dengan “matematika”

db.note.find({
    "judul_note" : {
        $eq : "matematika"
    }
})

dokumen yang ditampilkan pada mongodb shell

1.3.2 Query operator : $gt

menampilkan note yang memiliki tanggal_note lebih dari 2017-02-05. Nilai date tersebut akan dituliskan dalam fungsi new Date() yang akan menghasilkan ISODate (sesuai dengan saat kita memasukan dokumen / agar format sama) sehingga dapat dilakukan operasi (query operator). Maka perintahnya adalah

db.note.find({
    "tanggal_note" : {
        $gt  : new Date('2017-02-05')
    }
})

dokumen yang ditampilkan pada mongodb shell

1.3.3 Query operator : $gte

menampilkan note yang memiliki tanggal_note lebih dari sama dengan 2017-02-05. Maka perintahnya adalah

db.note.find({
    "tanggal_note" : {
        $gte  : new Date('2017-02-05')
    }
})

dokumen yang ditampilkan pada mongodb shell

1.3.4 Query operator : $lt

menampilkan note yang memiliki tanggal_note kurang dari 2017-08-05. Maka perintahnya adalah

db.note.find({
    "tanggal_note" : {
        $lt  : new Date('2017-08-05')
    }
})

dokumen yang ditampilkan pada mongodb shell

1.3.5 Query operator : $lte

menampilkan note yang memiliki tanggal_note kurang dari sama dengan 2017-08-05. Maka perintahnya adalah

db.note.find({
    "tanggal_note" : {
        $lte  : new Date('2017-08-05')
    }
})

dokumen yang ditampilkan pada mongodb shell

1.3.6 Query operator : $ne

menampilkan note yang nilai dari “judul_note” tidak sama dengan “matematika”. Maka perintahnya adalah


db.note.find({
    "judul_note" : {
        $ne : "matematika"
    }
})

dokumen yang ditampilkan pada mongodb shell

1.3.7 Query operator : $in

menampilkan note yang terdapat nilai “matematika” atau “kimia” pada judul_note. query operator $in ini memiliki fungsi seperti $eq namun input dari $in berupa array yang nantinnya akan dioperasikan secara “or”.

db.note.find({
    "judul_note" : {
        $in : ["matematika","kimia"]
    }
})

dokumen yang ditampilkan pada mongodb shell

1.4 Query OR

OR akan bernilai true jika salah satu nilai boolean bernilai true. Contoh penggunaan OR pada query filter document adalah misalnya kita akan mencari note dengan spesifikasi “judul_note” berupa “kimia” ATAUPUN “isi_note” yang bernilai tabel periodik

db.note.find({
    $or : [
        {
            "judul_note" : "kimia"
        },
        {
            "isi_note" : "tabel periodik"
        }
    ]
})

1.5 Query AND

AND akan bernilai true jika kedua satu boolean bernilai true. Contoh penggunaan AND pada query filter document adalah misalnya kita akan mencari note dengan spesifikasi “judul_note” berupa “kimia” DAN “isi_note” yang bernilai tabel periodik

db.note.find({
    "judul_note" : "kimia",
    "isi_note" : "tabel periodik"
})

1.6 Query LIKE

jika anda terbiasa dengan RDBMS ketika ingin melakukan search(mencari nilai yang mengandung hruuf atau kata tertentu pada kolom ditabel) maka query filter nya adalah dengan LIKE. Namun pada mongodb dilambangkan dengan “/kata/”. Contohnya kita akan mencari note dengan judul note yang mengandung huruf “kim”.

db.note.find({
    "judul_note" : /kim/,
})

2. Query pada array

pada bagian dua ini akan dibahas mengenai proses query terhadap field yang memiliki tipe data berupa array.

2.1 query “exact value” pada array

kita akan mencari note yang memiliki materi dengan isi sama persis dengan “tabung”, “kubus” dan “volume”. maka perintah yang digunakan adalah

db.note.find({
    "materi" : ["tabung","kubus","volume"]
})

dokumen yang ditampilkan pada mongodb shell

perintah diatas akan mencari berdasarkan nilai exact dari field “materi” dengan urutan array seperti diatas. Namun jika ingin mengabaikan urutan arraynya dapat menggunakan query operator untuk array yakni “$all“.

db.note.find({
    "materi" : {
        $all : ["volume","kubus","tabung"]
    }
})

2.2 Query menampilkan dokumen yang paling tidak ada satu nilai array (“exact” bukan “like”)

perintah yang digunakan adalah

db.note.find({
    "materi" : "volume"
})

dokumen yang ditampilkan pada mongodb shell