Server terpasang dan mongosh siap — saatnya menyambungkan keduanya secara sadar: tahu perintah mana yang memakai alamat mana, dan tahu cara memastikan koneksi benar-benar hidup. Kebiasaan ini penting karena pola koneksi yang sama akan kita pakai nanti pada Compass, driver Node.js, dan PyMongo. Chapter ini membahas empat bentuk koneksi mongosh: tanpa argumen, dengan connection string, sekali pakai lewat --eval, serta cara memeriksa dan menutup koneksi aktif.

Menjalankan mongosh Tanpa Argumen #

Bentuk paling sederhana adalah memanggil mongosh tanpa argumen apa pun:

bash
mongosh

Output yang Dihasilkan:

text
Current Mongosh Log ID: 6ad374d3e8ade47a7ac64031
Connecting to:          mongodb://127.0.0.1:27017/?directConnection=true&serverSelectionTimeoutMS=2000&appName=mongosh+2.13.0
Using MongoDB:          9.0.2
Using Mongosh:          2.13.0

For mongosh info see: https://www.mongodb.com/docs/mongodb-shell/

Perhatikan baris Connecting to:. Tanpa argumen, mongosh memakai alamat bawaan mongodb://127.0.0.1:27017/ — komputer sendiri, port 27017 — lalu menambahkan beberapa parameter teknis seperti batas waktu pemilihan server (serverSelectionTimeoutMS) dan label aplikasi (appName). Nilai Log ID berbeda pada setiap sesi.

Setelah banner, shell menampilkan prompt yang bentuknya mengikuti topologi server: test> pada server standalone, atau rs0 [direct: primary] test> ketika server merupakan anggota replica set bernama rs0. Prompt inilah tempat kita mengetik perintah pada bab-bab berikutnya. Untuk keluar, gunakan exit, quit(), atau Ctrl+D.

Koneksi dengan Connection String #

Ketika server berjalan bukan di alamat bawaan — port berbeda, komputer lain, atau cluster Atlas — kita menyebutkan connection string secara eksplisit sebagai argumen pertama:

bash
mongosh "mongodb://127.0.0.1:27017/?directConnection=true"

String di dalam tanda kutip ganda adalah URI lengkap: skema, host, port, dan parameternya. Anatomi setiap bagiannya kita bedah pada Chapter Connection String; untuk sekarang, yang perlu diingat adalah directConnection=true memerintahkan mongosh menyambung langsung ke satu server tanpa mencoba menemukan anggota cluster lainnya.

Connection string juga bisa menyertakan database default setelah host. Perhatikan contoh berikut:

bash
mongosh --quiet "mongodb://127.0.0.1:27017/latihan_toko?directConnection=true" --eval 'db.getName()'

Output yang Dihasilkan:

text
latihan_toko

Karena URI memuat /latihan_toko, mongosh membuka sesi dengan database latihan_toko sebagai database aktif — itulah mengapa db.getName() menjawab latihan_toko, bukan test. Opsi --quiet menyembunyikan banner agar keluaran perintah lebih bersih.

Perintah Sekali Pakai dengan –eval #

Opsi --eval mengeksekusi satu ekspresi lalu langsung keluar — berguna untuk skrip dan pemeriksaan cepat tanpa membuka sesi interaktif:

bash
mongosh --quiet --eval 'db.adminCommand({ ping: 1 }).ok'

Output yang Dihasilkan:

text
1

Perintah tersebut menjalankan ping terhadap server default di 127.0.0.1:27017, mengambil field ok dari hasilnya, dan mencetak 1 — tanda server menjawab dengan sukses. Bungkus ekspresi dengan tanda kutip tunggal agar karakter khusus JavaScript seperti {, }, dan spasi tidak ditafsirkan shell.

Bagaimana bentuk kegagalannya? Berikut hasil saat alamat yang dituju tidak memiliki server yang hidup:

bash
mongosh --quiet "mongodb://127.0.0.1:29999/?directConnection=true&serverSelectionTimeoutMS=1000" --eval 'db.adminCommand({ ping: 1 }).ok'

Output yang Dihasilkan:

text
MongoNetworkError: connect ECONNREFUSED 127.0.0.1:29999

Pesan ECONNREFUSED berarti koneksi ditolak: tidak ada proses yang mendengarkan alamat dan port tersebut. Solusinya adalah menyalakan mongod (kembali ke Chapter Instalasi MongoDB Community) atau memeriksa kembali host dan port pada connection string.

Memeriksa Koneksi Aktif #

Di tengah sesi interaktif, kita bisa bertanya kepada shell: terhubung ke mana dan dalam kondisi apa. Objek db.getMongo() memuat seluruh informasi koneksi:

js
db.getMongo()

Output yang Dihasilkan:

text
mongodb://127.0.0.1:27017/?directConnection=true&serverSelectionTimeoutMS=2000&appName=mongosh+2.13.0

Keluaran tersebut adalah connection string yang sedang aktif, termasuk parameter yang ditambahkan mongosh secara otomatis. Pemeriksaan kedua menanyakan kondisi server di ujung koneksi:

js
db.hello().isWritablePrimary

Output yang Dihasilkan:

text
true

Perintah hello menanyakan identitas server; field isWritablePrimary bernilai true bila server yang terhubung bersedia menerima operasi tulis. Dua hasil ini cukup untuk memastikan koneksi sehat: alamat benar dan server bisa menerima perintah.

Rangkuman #

  • mongosh tanpa argumen terhubung ke mongodb://127.0.0.1:27017/ — alamat bawaan server lokal.
  • Connection string diberikan sebagai argumen pertama; segmen /namaDatabase menjadikan database tersebut sebagai database aktif.
  • --eval menjalankan satu ekspresi lalu keluar; --quiet menyembunyikan banner.
  • db.getMongo() menampilkan koneksi aktif; db.hello().isWritablePrimary memastikan server siap menerima tulisan.
  • MongoNetworkError: connect ECONNREFUSED berarti tidak ada server pada alamat tersebut — periksa host, port, dan status mongod.