Satu baris teks menjadi kunci masuk ke seluruh dunia MongoDB: mongosh, Compass, driver Node.js, PyMongo, dan Mongoose semuanya membaca alamat koneksi dalam format yang sama. Format itu bernama connection string — sebuah URI yang memuat server tujuan, kredensial, database awal, dan opsi tambahan. Kesalahan membaca satu komponen saja bisa membuat koneksi gagal atau autentikasi ditolak, jadi Chapter ini membedah anatomi tersebut bagian demi bagian sampai kita bisa menyusun dan membacanya sendiri.
Anatomi Connection String #
Bentuk lengkap sebuah connection string standar adalah sebagai berikut:
mongodb://budi:[email protected]:27017/latihan?authSource=adminEnam komponen penyusunnya, berurutan dari kiri:
| Komponen | Contoh | Fungsi |
|---|---|---|
| Skema | mongodb:// | Menandai format URI MongoDB standar |
| Kredensial | budi:YOUR_PASSWORD@ | Nama pengguna dan kata sandi untuk autentikasi |
| Host | 127.0.0.1 | Alamat server tujuan (IP atau nama domain) |
| Port | :27017 | Port server; 27017 adalah bawaan MongoDB |
| Database default | /latihan | Database aktif saat sesi dibuka |
| Opsi | ?authSource=admin | Pengaturan tambahan dalam pasangan kunci=nilai |
Dari tabel di atas, hanya skema dan host yang wajib ada. Kredensial tidak diperlukan pada server lokal tanpa autentikasi, port boleh dilewatkan bila server memakai 27017, dan database default boleh tidak ditulis — mongosh lalu membuka database test sebagai gantinya.
Skema mongodb+srv untuk Atlas #
Connection string dari MongoDB Atlas tampak sedikit berbeda:
mongodb+srv://budi:[email protected]/?retryWrites=true&w=majorityAwalan mongodb+srv:// memberi tahu client untuk mencari informasi cluster lewat DNS. Client melakukan dua pencarian: record SRV yang memuat daftar seluruh host beserta portnya, dan record TXT yang memuat opsi bawaan seperti nama replica set. Inilah alasan string Atlas hanya menampilkan satu nama host cluster0.xxxxx.mongodb.net tanpa port, padahal di baliknya berjalan tiga anggota cluster — daftar lengkapnya ditemukan otomatis melalui DNS.
Kredensial dan Persen-Encoding #
Kredensial berbentuk pengguna:kataSandi@ dan berada sebelum host. Masalahnya, karakter seperti @, :, /, atau spasi memiliki makna khusus dalam URI — kata sandi P@ss w0rd akan membuat pembacaan URI salah parsing. Solusinya adalah persen-encoding: setiap karakter khusus diganti notasi %XX berdasarkan kode ASCII-nya.
Karena mongosh berbasis Node.js, kita bisa menghitungnya langsung di shell:
encodeURIComponent("[email protected]:P@ss w0rd")Output yang Dihasilkan:
budi%40example.com%3AP%40ss%20w0rdBaca hasilnya sebagai tabel substitusi: @ menjadi %40, : menjadi %3A, dan spasi menjadi %20. Dengan encoding tersebut, pasangan kredensial yang aman untuk ditempel ke URI adalah budi%40example.com%3AP%40ss%20w0rd. Fungsi encodeURIComponent() menangani semua karakter yang berpotensi bentrok, jadi kita tidak perlu menghafal tabelnya.
Parameter authSource pada contoh anatomi tadi menentukan database tempat pengguna terdaftar — admin adalah lokasi lazim, dan Atlas memakainya secara bawaan.
Parameter Umum #
Setiap opsi ditulis setelah tanda ? dan dipisahkan &. Tabel berikut memuat parameter yang paling sering kita jumpai:
| Parameter | Contoh nilai | Arti |
|---|---|---|
authSource | admin | Database tempat kredensial divalidasi |
replicaSet | rs0 | Nama replica set yang dituju |
directConnection | true | Sambung langsung ke satu host tanpa penemuan topologi |
tls | true | Aktifkan enkripsi koneksi (wajib untuk Atlas) |
retryWrites | true | Ulangi sekali operasi tulis yang gagal karena gangguan jaringan |
appName | aplikasi-toko | Label client pada log server, membantu pelacakan |
Dua parameter pertama berhubungan langsung dengan bab-bab awal Course ini. Server latihan kita berjalan sebagai replica set rs0, dan directConnection=true dipakai mongosh untuk menyambung langsung ke satu anggotanya. Parameter appName tampak sepele tetapi sangat membantu di produksi: dengan label berbeda per aplikasi, kita bisa mengenali sumber setiap koneksi pada log dan metrik server.
Membedah URI di dalam mongosh #
Trik terakhir memanfaatkan kemampuan JavaScript mongosh. Kelas URL bawaan Node.js dapat memecah URI menjadi bagian-bagiannya:
const u = new URL("mongodb://budi:[email protected]:27017/latihan?authSource=admin")
u.protocol
u.username
u.hostname
u.pathname
u.searchOutput yang Dihasilkan:
mongodb:
budi
127.0.0.1
/latihan
?authSource=adminMari kita baca kelima baris keluaran tersebut: u.protocol berisi skema (mongodb:), u.username nama pengguna, u.hostname host tujuan, u.pathname segmen database default (/latihan), dan u.search seluruh parameter beserta tanda ?-nya. Pemecahan ini persis mengikuti tabel anatomi di awal Chapter — cukup siapkan satu baris new URL(...) di mongosh kapan pun kita ragu membaca sebuah connection string.
Rangkuman #
- Connection string adalah URI dengan komponen: skema, kredensial, host, port, database default, dan opsi — hanya skema dan host yang wajib.
mongodb+srv://memakai record DNS SRV dan TXT untuk menemukan seluruh anggota cluster; dipakai Atlas.- Kredensial dengan karakter khusus wajib di-persen-encode:
encodeURIComponent()dimongoshmenghitungnya. - Parameter penting:
authSource,replicaSet,directConnection,tls,retryWrites, danappName. - Kelas
URLdimongoshbisa membedah URI menjadiprotocol,username,hostname,pathname, dansearch.