Koneksi ke server sudah berjalan, tetapi kita belum benar-benar berkenalan dengan alat yang menampung seluruh perintah kita: mongosh. Shell ini akan menjadi “ruang kerja” untuk hampir semua Chapter berikutnya, jadi memahami cara kerjanya sejak awal menghemat banyak waktu. Chapter ini membahas hal-hal berikut:
- Apa itu
mongoshdan mengapa shell ini berbasis Node.js. - Cara membaca prompt
test>dan variasinya di replica set. - Perbedaan mode REPL (interaktif) dan mode skrip (
--eval,--file). - Opsi
--quietserta file konfigurasi.mongoshrc.js.
Shell Resmi Berbasis Node.js #
mongosh (MongoDB Shell) adalah program baris perintah resmi untuk berkomunikasi dengan server MongoDB. Yang membuatnya istimewa: mongosh dibangun di atas Node.js, sehingga seluruh bahasa JavaScript modern tersedia langsung di dalam shell — const/let, arrow function, hingga template literal. Kita akan memanfaatkan kemampuan ini di Chapter Menggunakan Variabel.
Perlu satu klarifikasi penting. Selama belasan tahun MongoDB menyertakan shell lawas bernama mongo (tanpa akhiran “sh”); sejak MongoDB 6.0 shell tersebut tidak lagi disertakan, dan satu-satunya shell resmi sekarang adalah mongosh. Banyak artikel lama masih menulis mongo untuk memulai sesi — ganti perintah itu dengan mongosh.
Karena berjalan di atas Node.js, mongosh juga memakai driver Node.js resmi di balik layar. Akibatnya, cara kita mengakses data di shell hampir sama dengan cara aplikasi Node.js mengakses data — pengetahuan yang kita bangun di shell ikut terpakai saat menulis aplikasi sungguhan. Versi shell bisa diperiksa dari dalam sesi:
version()Output yang Dihasilkan:
2.13.0Fungsi version() melaporkan versi mongosh itu sendiri — bandingkan dengan db.version() yang melaporkan versi server di ujung koneksi.
Prompt REPL dan Cara Membacanya #
Saat dijalankan tanpa argumen, mongosh membuka sesi interaktif berpola REPL: Read (baca perintah), Eval (evaluasi), Print (cetak hasil), Loop (ulangi). Setiap ekspresi yang kita ketik langsung dievaluasi dan hasilnya dicetak kembali ke layar — lingkaran umpan balik inilah yang membuat shell terasa hidup.
Prompt bawaan sesi adalah test>. Bagian test adalah nama database aktif, yaitu database yang menjadi sasaran seluruh perintah. Pada server replica set seperti rs0 milik kita, prompt tampil lebih panjang: rs0 [direct: primary] test> — versi ringkasnya sudah kita bahas di Chapter Menghubungkan ke Server. Prompt ini akan berubah mengikuti database aktif begitu kita berpindah lewat use pada Chapter berikutnya.
Shell bisa memberi tahu mode eksekusinya sendiri lewat fungsi isInteractive():
isInteractive()Output yang Dihasilkan:
trueNilai true berarti kita sedang berada di sesi interaktif. Seperti kita lihat berikutnya, mode lain memberi jawaban berbeda.
Mode REPL vs Mode Skrip #
mongosh mengenal dua wajah. Mode REPL adalah mode interaktif yang baru saja kita pakai. Mode skrip menjalankan kode sekali jalan tanpa percakapan — berguna untuk pemeriksaan otomatis atau tugas terjadwal. Perbedaan perilakunya:
| Aspek | Mode REPL | Mode skrip |
|---|---|---|
| Cara menjalankan | sesi interaktif | --eval 'ekspresi' atau --file skrip.js |
| Hasil ekspresi | otomatis di-echo | hanya tampil bila dicetak console.log()/print() |
Perintah use dan show | tersedia | tidak tersedia |
isInteractive() | true | false |
Mari buktikan kolom terakhir. Perintah berikut mengevaluasi isInteractive() tanpa membuka sesi interaktif:
mongosh --quiet --eval 'isInteractive()'Output yang Dihasilkan:
falseUntuk kode yang lebih panjang dari satu ekspresi, gunakan file JavaScript dan opsi --file:
// mdtest: skip — isi file cek-koneksi.js
const hasil = db.adminCommand({ ping: 1 })
console.log("Ping ok:", hasil.ok)
console.log("Database aktif:", db.getName())mongosh --quiet --file cek-koneksi.jsOutput yang Dihasilkan:
Ping ok: 1
Database aktif: testBedah skrip di atas: baris pertama menjalankan perintah ping dan menyimpan hasilnya ke variabel hasil, dua baris berikutnya mencetak field ok beserta nama database aktif. Perhatikan bahwa tidak ada hasil ekspresi yang muncul otomatis — hanya keluaran console.log() yang tercetak. Inilah cara kerja mode skrip: senyap kecuali kita meminta dicetak.
Opsi –quiet dan File .mongoshrc.js #
Opsi --quiet menyembunyikan banner pembuka agar keluaran perintah lebih bersih — kita sudah memakainya di Chapter Menghubungkan ke Server, dan opsi ini aman dipadukan dengan --eval maupun --file.
Selanjutnya: sesi interaktif membaca file .mongoshrc.js dari direktori home setiap kali mongosh dinyalakan. File ini berisi JavaScript biasa yang dieksekusi sebelum prompt pertama muncul. Kegunaan klasiknya adalah mengubah tampilan prompt:
// mdtest: skip — isi file ~/.mongoshrc.js
prompt = () => db.getName() + "> "Dengan konfigurasi tersebut, prompt selalu menampilkan nama database aktif dalam bentuk ringkas — test> di awal sesi, lalu latihan_shell> setelah kita berpindah database. Bab-bab berikutnya tetap menampilkan prompt bawaan; sesuaikan bila ingin tampilan yang lain.
Untuk mengakhiri sesi interaktif, gunakan salah satu dari exit, quit(), .exit, atau pintasan keyboard Ctrl+D. Keempatnya menutup koneksi dengan rapi lalu mengembalikan kita ke terminal sistem operasi.
Rangkuman #
mongoshadalah shell resmi satu-satunya, dibangun di atas Node.js; shell lawasmongosudah tidak disertakan sejak MongoDB 6.0.- Prompt
test>menampilkan nama database aktif; di replica set muncul awalanrs0 [direct: primary]. - Mode REPL meng-echo hasil setiap ekspresi; mode skrip (
--eval,--file) senyap kecuali kita memakaiconsole.log()atauprint(). isInteractive()membedakan kedua mode:truedi REPL,falsedi skrip..mongoshrc.jsdieksekusi saat startup — tempat kustomisasi prompt dan fungsi bantu;--quietmenyembunyikan banner.