Anda di halaman 1dari 15

Sumber : http://www.diskusiweb.com/discussion/41339/mengenal-mongodb-opensource-database-nosql-document-oriented/p1 ( he!

ink"ighter# desember $%11& 'ungkin sebagian (nda masih belum tahu# apa itu 'ongo)*# apakah sebuah +)*'S seperti haln,a ',S-. atau bukan ,a/ )engan per0orma lebih cepat dibandingkan ',S-.# 'ongo)* menawarkan sesuatu ,ang lain. (dapun nama-nama besar Foursquare, Disney, Forbes, Sourceforge ataupun Github telah menggunakann,a. !enasaran/ 1uk kita berkenalan lebih 2auh dengan 'ongo)*# siapa tahu ke depann,a bisa men2adi alternati0 ,ang bisa (nda gunakan.

Sekilas Tentang NoSQL


Sebelum lan2ut# kita perlu kenali terlebih dahulu konsep 3oS-.. *uat apa/ !ertan,aan ,ang bagus. 3oS-. (singkatan dari 3ot 4nl, S-.& sendiri adalah tipe database ,ang sangat 2auh berbeda dengan konsep +)*'S ataupun 4)*'S. !erbedaan utaman,a sendiri ,aitu karena tidak mengenal istilah relation dan tidak menggunakan konsep schema. 5alau biasan,a (nda menggunakan quer, 67oin8 di sini (nda tidak bisa menggunakann,a karena setiap tabel berdiri sendiri tanpa tergantung dengan tabel lainn,a alias independen. Selain itu kalau di dalam konsep )*'S biasan,a sebelum insert data (nda diharuskan untuk mende0inisikan terlebih dahulu struktur tabel seperti tipe data dan ukurann,a# di konsep 3oS-. ini (nda bisa men,impan data tanpa perlu mende0inisikan tipe data dan ukurann,a lagi. 7adi lebih 0leksibel bila ada perubahan di masa mendatang. (dapun beberapa database 3oS-. ,ang ada saat ini ,aitu Cassandra, Big Table, CouchDB, Redis, Riak, Dynamo dan lainn,a. entun,a ,ang akan kita bahas di sini secara khusus adalah 'ongo)*.

Apa Itu MongoDB?


'ongo)* merupakan database open source berbasis dokumen ()ocument-4riented )atabase& ,ang awaln,a dibuat dengan bahasa 9::. 'ongo)* sendiri sudah dikembangkan oleh 1%gen se2ak 4ktober $%%;# namun baru dipublikasikan pada "ebruari $%%9. Selain karena per0orman,a 4 kali lebih cepat dibandingkan ',S-. serta mudah diaplikasikan# karena telah tergabung 2uga sebagai modul !<!. )alam konsep 'ongo)* tidak ada ,ang naman,a tabel# kolom ataupun baris ,ang ada han,alah collection (ibaratn,a tabel&# document (ibaratn,a record&. )ata modeln,a sendiri disebut *S43 dengan struktur mirip dengan 7S43. Strukturn,a cukup mudah dibaca# contohn,a seperti ini.
{ "nama" : "budi", "kontak" : { "alamat" : "Jl. Mawar No. 15", "kota" : "Jakarta", "kodepos" : "12345", "telp" : "0 12345!"",

# #

)engan konsep ke,-=alue ,ang ada pada 'ongo)*# setiap document otomatis memiliki inde> id ,ang unik. <al ini membantu mempercepat proses pencarian data secara global.

Kelebihan MongoDB
'ongo)* hadir dengan beberapa kelebihan ,aitu : 1. !er0orma ,ang ditawarkan 'ongo)* lebih cepat dibandingkan ',S-. ini disebabkan oleh memcached dan 0ormat dokumenn,a ,ang berbentuk seperti 7S43 $. +eplikasi# adalah 0itur ,ang sangat berman0aat untuk backup data secara realtime. 'ongo)* sangat cocok digunakan untuk portal berita ataupun blog# namun belum cocok untuk digunakan pada sistem in0ormasi ,ang berkaitan dengan keuangan karena 'ongo)* tidak mendukung transaction S-. 3. Auto sharding# merupakan 0itur untuk memecah database ,ang besar men2adi beberapa bagian demi optimalisasi per0orma database. !enggunaann,a sendiri sangat berguna ketika (nda memiliki website dengan database ,ang 2utaan baris# sharding akan membantu memecahn,a men2adi beberapa bagian 4. 'ongo)* 2uga sudah mendukung 9# 9::# 9?# @rlang# <askell# 7a=a# 7a=aScript# .3@ (9? "?# !owerShell&# .ips# !erl# !<!# !,thon# +ub, dan Scala A. Cross !latform# sehingga dapat digunakan di Bindows# .inu># 4S C dan Solaris D. !roses 9+E) (9reate# +ead# Epdate# )elete& terasa sangat ringan ;. "a!#Reduce# akan sangat membantu ketika kita melakukan operasi agregasi. )imana semua entr, datangn,a dari collection dan outputn,a pun akan men2adi collection 2uga. 5alau di ',S-. biasan,a kita menggunakan quer, F+4E! *1 G. GridFS# spesi0ikasi ,ang digunakan untuk men,impan data ,ang sangat besar

Instalasi MongoDB
Sebagai contoh kali ini# kita akan mencoba untuk menginstalasi 'ongo)* di Bindows. Sebelum memulai# (nda harus mengunduh dari link berikut ini (tersedia untuk 3$-bit dan D4-bit& : http://www. ongo!b.o"g/!ownloa!s Setelah diunduh silahkan diekstrak di dri=e 9 (bisa 2uga di dri=e lainn,a&. *uatlah 0older sebagai lokasi pen,impanan database misaln,a 0older )*# dengan path seperti ini :
$:%Mon&o%'(

Setelah 0older di atas dibuat# lalu buka command prompt dan ketikkan perintah berikut ini:
$:%Mon&o%bin)mon&od *dbpat+,$:%Mon&o%'(

!erintah di atas digunakan untuk men2alankan 'ongo)*# 2angan tutup 2endela command prompt# tapi buka 1 lagi ,ang baru ( 2adi ada $ 2endela command prompt dibuka&. 5etik perintah berikut ini :
$:%Mon&o%bin)mon&o Mon&o'( s+ell -ersion: 1. .2 .onne.tin& to: test )

Entuk melihat database apa sa2a ,ang ada di 'ongo)*# ketikkan perintah berikut :
) s+ow dbs/

Hngin menambahkan database baru/ 9oba ketik perintah ini ((nda dapat mengubah nama 6uni=ersitas8 sesuai dengan nama ,ang (nda inginkan& :
) use uni-ersitas swit.+ed to db uni-ersitas

Sekarang (nda sudah pun,a database uni=ersitas# sekarang saatn,a kita membuat collection (bisa dianggap tabel&# caran,a cukup mudah tak perlu membuat tipe data ataupun pan2ang data. 9ukup ketik perintah seperti berikut ini :
) db.ma+asiswa.sa-e0{nama:1(udi1,N2M:10313!3!34,5urusan:16istem 2n7ormasi1,8akultas:19eknolo&i 2n7ormasi1#:

)ari perintah di atas kita sudah memiliki 1 data mahasiswa ,aitu *udi. Hntin,a ketika kita membuat collection baru# kita 2uga sudah memiliki 1 data. Selan2utn,a (nda bisa menambah data baru lagi# dengan perintah insert seperti ini :
) db.ma+asiswa.insert0{nama:1;ni1,N2M:10332533!4,5urusan:16istem 2n7omasi1,8akultas:19eknolo&i 2n7ormasi1#:

*erarti kita sudah pun,a $ baris data# nah (nda 2uga bisa menampilkan data ,ang sudah (nda simpan tadi dengan perintah berikut :
) db.ma+asiswa.7ind0:

'aka datan,a akan tampil seperti ini :


{ <=id> : ?b5e.t2d0<453.3 a2d342.!33.50. eaa>:, <nama> : >(udi>, <N2M> :>0313!3!3@, <5urusan> : <6istem 2n7ormasi>, <8akultas> : <9eknolo&i 2n7ormasi> # { <=id> : ?b5e.t2d0<453.3357d342.!33.50. eab>:, <nama> : <;ni>, <N2M> : <0332533!@, <5urusan> : <6istem 2n7ormasi>, <8akultas> : <9eknolo&i 2n7ormasi> #

3ah# kok tiba-tiba muncul id ,a/ 5alau di ',S-. itu naman,a !rimar, 5e, ,ang harus dibuat# tapi di 'ongo)*# id muncul otomatis berikut datan,a. Selan2utn,a kita akan mencoba untuk mengedit data# coba ketik perintah ini :

) person,db.ma+asiswa.7ind?ne0{N2M:40313!3!34#: { "=id" : ?b5e.t2d0"453.3 a2d342.!33.50. eaa":, "nama" : "(udi", "N2M" : "0313!3!3", "5urusan" : "6istem 2n7ormasi", "8akultas" : "9eknolo&i 2n7ormasi" # ) person.5urusan,49eknik 2n7ormatika4 ) db.ma+asiswa.sa-e0person:/

Sedangkan perintah untuk menghapus data bisa dengan cara seperti ini :
db.ma+asiswa.remo-e0{N2M:40313!3!34#:

9ukup sederhana bukan/ 3ah lain waktu akan kita bahas lebih dalam lagi# selamat mencoba. Sumber : http://emka.web.id/programming/database/mongodb/$%11/bela2ar-mongodbsekilas-tentang-mongodb/ (admin# 3% september $%11& 'ongo)* merupakan salah satu 2enis database# lebih tepatn,a masuk dalam kategori )ocument-oriented )atabase. 'ongo)* dikembangkan se2ak 4ktober $%%; oleh 1%Fen# dirilis publik se2ak "ebruari $%%9 dan dilepas dengan lisensi F3E (F!. 3.% dan (pache .icense untuk dri=ern,a.

.ogo 'ongo)* 'ongo)* sendiri ditulis dengan bahasa 9:: dan telah tersedia untuk berbagai 2enis bahasa pemrograman. "itur utama dari mongo)* antara lain:

model document-oriented storage dukungan penuh untuk inde>ing data mendukung replikasi database dan tra0ik data tinggi auto-sharding (partisi database otomatis& mendukung 0itur map and reduce mendukung arsitektur grid"S

Selain 0itur utama diatas# perbedaan n,ata ,ang mungkin akan kita alami dalam penggunaan mongodb dibanding database lain (m,sql# mssql# postgresql# dll& adalah saat proses pen,iapan struktur. Setiap database berbasis mongodb akan terdiri atas suatu collection# dimana collection itu terdiri atas beberapa document. *ila dianalogikan dengan bahasa S-.# maka 9ollection adalah table# dan )ocument adala row table. 5arena 'ongo)* tidak mengenal konsep tabel dan row# maka saat proses insert data kita

lakukan# mongodb akan otomatis membuatkan struktur tabeln,a (baca: struktur koleksi database-n,a&.

Bahasa MongoDB
'ongo)* tidak menggunakan bahasa S-.# tapi menggunakan bahasa *S43 (*inar, 7S43&. 7S43 adalah konsep pertukaran data secara ringkas# terstruktur# sederhana# asosiati0 dan terserialisasi. 9ontoh bahasa *S43 dalam mongodb ini antara lain: 1. Hnsert data 1 $ 3 { 4 "nama=depan" : "lut+7i", A "nama=belakan&" : "emka", "alamat" : { D "desa" : "(ulun&kulon", ; "rt" : "!", G "rw" : "A2", 9 "ke.amatan" : "Jekulo", "kabkota" : "Budus", 1 "propinsi" : "Jawa ten&a+" % # 1 # 1 1 $ $. Searching data I db.mahasiswa.0ind(JKalamat.desaL : KbulungkulonLM& Sampai saat ini# bahasa pemrograman ,ang telah mendukung 'ongo)* antara lain: 9# 9::# 9?# <askell# 7a=a# 7a=aScript# .isp# !erl# !<!# !,thon# +ub, dan Scala. )isamping itu dengan sedikit usaha# kita masih bisa menggunakan 'ongo)* dengan dri=er database tidak resmi (dari komunitas mongodb sa2a& untuk bahasa 9?.3@ # 9old"usion# )elphi# @rlang# "actor# "antom# Fo# 7N'# .ua# node.2s# +acket dan Smalltalk.

#$I
(da beberapa aplikasi FEH ,ang dapat digunakan untuk mengelola mongodb# antara lain:

"ang o0 'ongo (web-based& "uton4'onggo (web-based& 'ongo3 (rub,-based&# 'ongo<ub (4SC-apps&#

4pricot (web-based&# )atabase 'aster (Bin3$&

Sumber : http://bisakomputer.com/mengenal-mongodb-part-1/ ('usto0a# 1A 7ul, $%1$&

MongoDB Part 1: Pengenalan Document-Oriented MongoDB


*erbeda dengan ',S-.# S-. Ser=er atau !ostgreS-. ,ang merupakan database bertipe relational database# 'ongo)* ini bukanlah termasuk itu. 'ongo)* adalah salah satu dari database 3oS-.# ,aitu sebuah konsep pen,impanan data non-relational. Hstilah 3oS-. ini 2uga bukan berarti K3o S-.L# tapi merupakan kepan2angan dari K3ot 4nl, S-.L. (da beberapa metode berbeda ,ang dipakai oleh database-database 2enis ini untuk stored data# salah satun,a adalah metode document-oriented ,ang digunakan oleh 'ongo)*. *eberapa poin penting dari document-oriented dari 'ongo)* ini adalah:

)ata unit dari 'ongo)* dikatakan sebagai document# ini sama dengan row dalam relational database. 5oleksi beberapa dokumen disimpan dalam collection# ini sama dengan table dalam relational database. )atabase merupakan kumpulan dari beberapa collection. 'ongo)* dapat menerima lebih dari satu database secara independen. 'ongo)* memiliki 2a=ascript shell ,ang sangat berguna untuk urusan administrasi dan manipulasi data. (ulasan akan sa,a sambung pada bagian $ & )ata-data document akan dipisah dan kemudian di store ke beberapa komputer cluster (ulasan lengkap mengenai ini akan ada di artikel ini bagian 3&

Document
)iawal dikatakan bahwa unit utama dari database ini adalah document. )ocument disini merupakan data dengan beberapa ke, dan =alue. Struktur data seperti map# hash dan distionar, merupakan beberapa bentuk representasi dari document ,ang kita bicarakan ini. Setiap bahasa pemrograman merepresentasikan dokumen ini berbeda-beda. 3amun# di 7a=ascript kita bisa menuliskan sebuah document seperti ini:
{ "title": "Mon&odb part 22", "last=modi7ikasi": "6at Jul 14 2012 11:30:02 CM9D0"00 0E29:"/ ".ontent": "Forem ipsum dolor sit amet", "pa&e-iews":1 #

Hni tampak seperti kita menulis data dengan 0ormat 7S43# tapi 0ormat penulisan pada 'ongo)* lebih dikenal dengan nama *S43 (*inar, 7S43&. (da beberapa keuntungan *S43 daripada 7S43# diantaran,a adalah 7S43 tidak dapat menerima data dengan tipe date# sedangkan *S43 dapat. 7S43 tidak dapat membedakan data integer# double dan 0loat# dia han,a memiliki data dengan tipe data number ()ouble-precision 0loating-point 0ormat& sedangkan *S43 dapat membedakann,a# selain itu 2uga ada beberapa tipe data seperti s,mbol# rege># dan code ,ang tidak ada dalam 7S43 tapi ada di *S43. *erikut adalah beberapa tipe data ,ang di su!!ort oleh 'ongo)*: null: ipe data ini untuk merepresentasikan null =alue atau ketidaksediaan ke, sebuah data
{ "email": "musto7aGmimi.reati-e.net", "website": null #

boolean: <an,a ada dua nilai dari boolean# true atau 0alse
{ "username":"musto7a", "is;kti7": true #

%&'bit intege": ipe data ini tidak dapat digunakan pada 2a=ascript shell mongodb# hal ini karena 2a=ascript han,a support D4-bit 0loating point number. 'emanipulasi data 3$-bit integer pada shell akan di ubah ke bentuk D4-bit 0loating-point. ()'bit intege": ipe data ini 2uga tidak dapat digunakan pada shell mongodb. ()'bit *loating point nu be": !ada shell mongodb# semua number akan di ubah ke bentuk ini D4-bit 0loating point number
{"H" : 3.14, >I>: 3#

st"ing: String mongodb sudah menggunakan (http://en.wikipedia.org/wiki/Enicode&


{"H" : "7oobar"#

encoding

unicode

atau

E "G

ob+e,t i!: 4b2ek id ,ang pasti ada pada tiap document# berukuran 1$-b,te dan akan digenerate otomatis saat pembuatan document
{"H" : ?b5e.t2d0:#

!ate
{"H" : new 'ate0:#

"egula" e-p"ession: Sebuah ke, document 2uga bisa berisi regular e>pression (rege>&.
{"H" : J7oobarJi#

,o!e: Sebuah ke, document 2uga dapat men,impan kode-kode 2a=ascript


{"H" : 7un.tion0: { JK ... KJ ##

bina". !ata: ipe data ini tidak dapat dimanipulasi oleh 2a=ascript shell. a""a.: Hni merupakan kumpulan dari beberapa =alue# tapi ,ang harus diketahui disini bahwa tiap =alue dalam satu arra, boleh berbeda tipe datan,a# contoh seperti
{"t+in&s" : L"pie", 3.14M#

e be!!e! !o,u ent: ipe data ini memiliki arti dokumen ,ang memiliki atau embbed document lain. 9ontoh kasus# sa,a memiliki sebuah dokumen blog post seperti ini
{ "title":"Nen&enalan Mon&o'( Nart 2", "aut+or":"Musto7a", ".ontent":"Forem ipsum" #

5alau pada +)*'S kita biasa memisahkan antara tabel post dengan komentarn,a. 3amun# untuk 'ongo)* document komentar dapat kita 2adikan satu pada document post n,a. <al seperti inilah ,ang dimaksud dengan embedded document itu.
{ "title":"Nen&enalan Mon&o'( Nart 2", "aut+or":"Musto7a", ".ontent":"Forem ipsum", ".omment":{"aut+or":"'idik","date": new 'ate0:,".ontent":"'olor sit amet"# #

!ost document pastin,a memiliki lebih dari satu komentar. Sehingga ke, KcommentL seharusn,a berbentuk arra, seperti ini
{ "title":"Nen&enalan Mon&o'( Nart 2", "aut+or":"Musto7a", ".ontent":"Forem ipsum dolor sit amet", ".omment":L{"aut+or":"Jo+n 'oe",".ontent>:"'olor sit amet"#, {"aut+or":"Jos+",".ontent":"..."#M #

Collections
7ika document dianalogikan sebagai row# maka collection bisa dianalogikan seperti tabel. (nalogi lain# collection sebuah 0older dengan ban,ak 0ile sebagai document-n,a. )ari dua analogi itu# sudah sangat 2elas bahwa collection ini terdiri dari satu atau ban,ak document independent. !erlu kita ketahui adalah collection pada 'ongo)* bersi0at schema-0ree. Hni bertolak belakang dengan +)*'S ,ang schema-0ull. 5alau pada ',S-. tabel itu harus diinisialisasi dulu seperti 2umlah kolom# nama kolom# primar, ke, dan constrain-n,a# maka schema-0ree berarti semua inisialisasi seperti itu tidak ada. 5arena si0at schema0ree inilah ,ang disebut sebut mempercepat per0orma mongodb daripada database 2enis relational seperti S-. Ser=er# ',S-. ataupun !ostgreS-..

Database
5umpulan satu atau lebih collection membentuk database. 'ongo)* bisa memiliki lebih dari satu database ,ang masing-masing memiliki permission dan masing-masing bisa disimpan pada sebuah 0ile disk ,ang berbeda. Hni sangat berman0aat saat anda memiliki beberapa aplikasi dengan ban,ak user tapi han,a satu ser=er mongodb.

Mengapa harus memakai MongoDB?


(lasan utaman,a karena mudahn,a mengatur scale database. Scaling database bisa dilakukan dengan dua cara ,ang pertama scaling up (memperbesar kualitas mesin& dan ,ang kedua scaling out (partisi data ke beberapa mesin&. Entuk sebuah web application ,ang besar akan sangat tidak e0ekti0 2ika ditanggung oleh satu mesin. erlebih lagi kebutuhan akan mesin dengan spesi0ikasi tinggi 2uga mahal# maka pilihan ,ang e0ekti0 untuk scaling database adalah dengan mem-partisi data ke beberapa mesin untuk menambah optimalisasi pemrosesan data. 'ongodb telah dirancang se2ak awal untuk urusan itu. )ocument-oriented ,ang dimiliki oleh 'ongo)* akan secara otomatis membagi data ke beberapa mesin. !enambahan mesin baru bisa dilakukan dengan mudah# cukup memasukkann,a ke cluster (http://en.wikipedia.org/wiki/9lusterO(computing&& dan biarkan 'ongo)* ,ang mengatur semuan,a. Entuk ulasan lengkap tentang scale out ini akan sa,a tulis pada bagian tiga dari artikel ini.

Kesimpulan
'ongo)* adalah salah satu 2enis database 3oS-. dengan model document-oriented. 'udahn,a scaling out men2adikan pilihan tepat untuk web aplikasi ,ang memiliki tra00ic tinggi dan memiliki data besar. api perlu dipahami 2uga adalah database 2enis ini tidak menggantikan relational database. 'udahn,a scaling out tidak mengartikan bahwa semua data aplikasi cocok memakai mongodb. )iawal dikatakan bahwa model database mongodb bersi0at schema-0ree. 'odel ini dibangun tanpa relasi# constrain dan transactional process (http://en.wikipedia.org/wiki/ ransactionOprocessing&# sehingga

sangat tidak tepat memakai mongodb pada aplikasi-aplikasi ,ang sarat dengan proses transaksi seperti perbankan# pergudangan# atau akunting.

Installing MongoDB
'ongo)* tersedia untuk plat0orm Bindows# .inu># 'ac 4S C# dan Solaris. (nda dapat menemukan dan men-do$nload mongo)* pada alamat http://www.mongodb.org. Hnstalasin,a cukup mudah untuk diikuti# berikut adalah cara menginstall database ini pada Bindows dan .inu> /in!ows Install )ownload windows Pip pada halaman download mongodb http://www.mongodb.org/displa,/)49S/)ownloads. (da dua pilihan untuk windows# 3$-bit dan D4-bit =ersion. !ilih salah satu sesuai dengan komputer ker2a (nda. )ownload dan kemudian ekstrak pada direktori komputer. Sampai disini (nda sudah dapat men2alankan mongo ser=er dengan mengetikkan perintah berikut pada command line :
) bin%mon&od.eHe

Secara default semua berkas 0ile database (nda akan tersimpan pada sebuah 0older 0:1!ata1!b. 3amun# 2ika (nda telah men,iapkan 0older lain# anda dapat mende0inisikann,a dengan memberikan parameter Q-dbpath.
) bin%mon&od.eHe OOdbpat+ $:%'o.uments and 6ettin&s%Psername%MI 'o.uments%db

Entuk men2alankann,a sebagai sebuah ser%ice# (nda dapat memberikan parameter -install. Selan2utn,a (nda dapat men2alankan atau menghentikan mongo)* pada control panel Bindows (nda.
) bin%mon&od.eHe OOinstall

LinuInstall Entuk =ersi .inu> dan 'ac 4S dapat 2uga anda temukan pada halaman download 'ongo)*. )ownload dan kemudian decompress .tar.gP ,ang (nda dapatkan.
Q tar RH7 mon&odbOlinuHOi! !O1.!.0.tar.&R

Sama seperti Bindows install# (nda harus men,iapkan sebuah 0older untuk men,impan berkas 0ile database. *uat 0older baru dan setting permissionn,a agar 0older writable oleh 'ongo)*.
Q mkdir Op SJdb Q .+own OT QP6UT:QP6UT SJdb

Setelah men,iapkan 0older database (nda dapat men2alankan 'ongo)* dengan Qdbpath 0older database (nda.
Q .d mon&odbOlinuHOi! !O1.!.0 Q binJmon&od OOdbpat+ SJdb

Shell client mongoDB


'ongo)* dilengkapi dengan 7a=ascript shell client untuk para administrator dalam memanipulasi data. Shell client ini dapat di2alankan dengan perintah berikut:
Q binJmon&o

!erintah diatas menghubungkan (nda dengan ser%ice mongod ,ang 2alan pada komputer ,ang sama# tetapi 2ika ser%ice berada pada ser=er lain# (nda dapat menambahkan alamat ser%er dan !ort n,a seperti ini:
Q binJmon&o db.mimi.reati-e.net:20000

1ang menarik dari shell ini adalah 0itur connect ,ang dapat menghubungkan anda ke beberapa ser=er cluster ,ang (nda pun,a. 9aran,a pun sangat mudah# (nda han,a memanggil method ,onne,t23 dan kemudian men,impann,a pada sebuah =ariabel.
) mon&os , .onne.t0"lo.al+ost:2"01"": .onne.tin& to: lo.al+ost:2"01" lo.al+ost:2"01" ) s+ard0 , .onne.t0"db0.mimi.reati-e.net:30000": .onne.tin& to: db0.mimi.reati-e.net:30000 db0.mimi.reati-e.net:30000 ) s+ard1 , .onne.t0"db1.mimi.reati-e.net:30001": .onne.tin& to: db1.mimi.reati-e.net:30001 db1.mimi.reati-e.net:30001

9ontoh diatas# menghubungkan anda ke tiga ser=er cluster. 5etiga ser=er cluster itu kemudian diwakili oleh tiga =ariabel mongos# shard% dan shard1. Entuk ulasan lebih lengkap mengenai ini# akan sa,a tulis pada bagian ketiga dari artikel ini.

Creating Document
'embuat document pada mongo)* dapat dilakukan dengan memanggil method insert ,ang ada pada masing-masing collection.
) db.post.insert0{#:/

!ada perintah ini# ob+e,ti! 24i!3 akan secara otomatis di-generate dan ditambahkan pada document.

Removing Document
'enghapus document pada sebuah collection dapat dilakukan dengan memanggil method "e o5e23.
) db.post.remo-e0:/

!erintah ini akan menghapus semua document ,ang ada pada collection post. !erintah remo%e ini menghapus semua document tapi tidak dengan collection dan semua inde> ,ang telah ada. (nda 2uga dapat menambahkan beberapa kriteria sebagai parameter pada method ini# sehingga han,a kriteria ,ang sesuai ,ang akan dihapus.
) db.post.remo-e0{"title":"Mon&o'("#:/

Updating Document
Entuk mengedit sebuah document# dapat meman0aatkan method up!ate23 ,ang 2uga ada pada collection. "ethod ini menerima dua parameter# pertama quer, atau kriteria document dan kedua document ,ang sudah anda edit. 9ontoh kasus ketika (nda ingin menambahkan KslugL# mengubah lastOmodi0ikasi dan menghapus 0ield parentOpost ,ang ada pada document post.
{ "=id": ?b5e.t2d0"4b2b37!"a17!31"33d31"a"a":, "title": "Mon&odb part 22", "last=modi7ikasi": "6at Jul 14 2012 11:30:02 CM9D0"00 0E29:"/ "parent=post" : ?b5e.t2d0"4b2b37!"a17!31"33d313a1a":, ".ontent": "Forem ipsum dolor sit amet", "pa&e-iews":1 #

'aka perintah ,ang dapat anda ikuti untuk melakukan itu semua adalah seperti ini:
) ) ) ) ) t+epost,db.posts.7ind?ne0{"title":"Mon&odb part 22"#:/ t+epost.slu& , "mon&odbOpartO22"/ t+epost.last=modi7ikasi , new 'ate0:/ delete t+epost.parent=post/ db.posts.update0{"title":t+epost.title#,t+epost:/

$p!ate Mo!i*ie"s 'odi0iers ini berupa beberapa specials ke, ,ang akan sangat membantu (nda dalam hal u!dating document. *an,ak specials ke, ,ang dapat anda gunakan disini# tapi sa,a akan contohkan beberapa sa2a seperti Rinc# Rset dan Rpush. 'odi0iers Rinc bisa anda gunakan untuk increment data number# contohn,a ketika (nda ingin increment post =iew pada document.
) db.posts.update0{"title" : "Mon&odb part 22"#, {"Qin." : {"pa&e-iews" : 1##:/

!erintah update diatas akan membuat page=iews ,ang sebelumn,a bernilai 1 men2adi $. 'odi0iers ,ang kedua adalah Rset# sesuai naman,a modi0iers ini digunakan untuk mengganti =alue pada ke,# tapi 2ika ke, tidak ada maka secara otomatis akan ditambahkan. 9ontoh ketika anda ingin memberikan atau mengganti ke, KauthorL pada document post.
) db.post.update0{"title":"Mon&odb part 22"#,{"Qset" : {"aut+or" : "musto7a"##:/

'odi0iers Rset ini 2uga dapat mengakses ke, pada embedded document# semisal (nda han,a ingin mengubah ke, KnameL pada document ini
{ "=id": ?b5e.t2d0"4b2b37!"a17!31"33d31"a"a":, "title": "Mon&odb part 22", "aut+or":{ "name":"5o+n doe", "email":"&oo.museG&mail..om", "website":"+ttp:JJblo&.uinOmalan&.a..idJmusto7a" # ".ontent": "Forem ipsum dolor sit amet", #

maka perintah ,ang harus (nda lakukan adalah


) db.posts.update0{"aut+or.name" : "5o+n doe"#, {"Qset" : {"aut+or.name" : "musto7a"##:

'odi0iers terakhir adalah Rpush. 'odi0iers ini menambahkan element pada =alue ,ang bertipe arra,. 7ika ke, tidak ada# secara otomatis membuat ke, dan element ,ang baru di push men2adi element pertama. 9ontohn,a seperti anda menambahkan KcommentL pada document post.
{ "=id": ?b5e.t2d0"4b2b37!"a17!31"33d31"a"a":, "title": "Mon&odb part 22", ".omments"L { "name":"5o+n doe", "email":"doe.5o+nG&mail..om", ".ontent":"..." #, ... M #

maka ketika (nda ingin menambahkan komentar baru# (nda dapat melakukann,a seperti ini :

) db.blo&.posts.update0{"title" : "Mon&odb part 22"#, {Qpus+ : {".omments" :{"name" : "5os+", "email" : "5os+G&mail..om", ".ontent" : "ni.e post."###:/

9ukup tiga modi0ier itu sa2a ,ang dapat sa,a berikan# dan tentun,a ban,ak modi0ier ,ang harus anda pela2ari untuk updating data document. Silahkan buka link ini http://www.mongodb.org/displa,/)49S/Epdating untuk mempela2ari semua modifier ,ang dapat digunakan u!dating data.

Read Document
Entuk membaca document 'ongo)*# (nda dapat mengandalkan dua method ini# *in!23 dan *in!6ne23. "ethod *in!23 mengembalikan arra, document sedangkan *in!6ne23 han,a mengembalikan document tunggal pada sebuah collection.
) db.posts.7ind0:/

'emanggil *in!23 tanpa ada quer, ,ang dimasukkan# seperti pada perintah diatas# akan mengembalikan semua document ,ang ada pada collection tersebut. 'elakukan quer, pada 0ind(& cukup simple untuk dilakukan. 'isaln,a (nda menginginkan semua document ,ang memiliki sebuah KtitleL dan ditulis oleh seorang KauthorL# maka (nda dapat melakukann,a seperti berikut:
) db.posts.7ind0{"title":"Mon&odb part 22","aut+or.name":"musto7a"#:/

'ethod *in!23 dan *in!6ne23 sebenarn,a memiliki dua parameter# ,ang pertama adalah quer, seperti contoh diatas# dan ,ang kedua adalah option output ke,s document. 7ika anda tidak mende0inisikan parameter kedua ini# maka secara default semua ke, ,ang ada pada document output akan dimunculkan. <al ini tentun,a tidak bagus 2ika (nda han,a membutuhkan beberapa ke, dari document tapi ,ang muncul semua. )engan mende0inisikann,a# (nda dapat mengatur ke, apa sa2a ,ang akan di ikut sertakan dalam document output.
) db.posts.7ind0{#,{"title":1,"aut+or":1#:/

9ontoh perintah diatas melakukan quer, dan han,a ke, KtitleL dan KauthorL sa2a ,ang akan diambil sebagai keluaran pada document. *an,ak operator ,ang dapat (nda gunakan untuk melakukan quer, document. 4perator apa sa2a ,ang dapat dipakai untuk melakukan quer,# dapat (nda baca pada http://www.mongodb.org/displa,/)49S/(d=anced:-ueries. api disini tiga operator sa2a ,ang akan sa,a sebutkan. 4perator pertama adalah Rin. -uer, dengan operator ini# akan mengembalikan semua document ,ang cocok dengan elemen-elemen ,ang diberikan padan,a. 9ontoh peman0aatann,a semisal anda ingin mengambil semua document dari author 2ohn doe# 2osh# dan 2eni# maka perintah ,ang dapat dilakukan adalah seperti ini:
) db.posts.7ind0{"aut+or.name":{Qin:L"5o+n doe","5os+","5eni"M##:/

4perator ,ang kedua adalah Ror. 4perator ini memiliki 0ungsi ,ang sama dengan Rin# bedan,a Rin melakukan 0ungsi 4+ han,a pada satu ke, dan Ror melakukann,a pada lebih dari satu ke,. 9ontohn,a# mengambil semua document ,ang KcreatedL dan KlastOmodi0iedL pada hari ini# maka dapat dilakukan dengan:
) db.posts.7ind0{Qor:L{".reated": new 'ate0:#,{"last=modi7ied": new 'ate0:#M#:/

erakhir ,aitu operator Rnot. 4perator ini kebalikan dari Rin# dimana akan mengembalikan document ,ang tidak termasuk pada elemen-elemen ,ang ada padan,a. 9ontohn,a anda ingin mengambil semua document kecuali document dengan author 2osh dan 2ohn doe# maka perintah ,ang dapat anda lakukan adalah:
) db.posts.7ind0"aut+or.name":{Qnot:L"5o+n doe","5os+"M#:/

Kesimpulan
Sebenarn,a masih ban,ak bahasan pada topik ini. Semua itu harus dipela2ari 2ika anda memilih menggunakan database 2enis ini. (nda dapat menemukan semuan,a pada dokumentasi ,ang sudah disediakan oleh mongodb pada link http://www.mongodb.org/displa,/)49S/'anual. !ada part 3 ,aitu part terakhir dari tulisan ini# sa,a akan mengulas sharding process dalam rangka mempartisi data ke beberapa mesin di 'ongo)*.

Anda mungkin juga menyukai