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:

text
mongodb://budi:[email protected]:27017/latihan?authSource=admin

Enam komponen penyusunnya, berurutan dari kiri:

KomponenContohFungsi
Skemamongodb://Menandai format URI MongoDB standar
Kredensialbudi:YOUR_PASSWORD@Nama pengguna dan kata sandi untuk autentikasi
Host127.0.0.1Alamat server tujuan (IP atau nama domain)
Port:27017Port server; 27017 adalah bawaan MongoDB
Database default/latihanDatabase aktif saat sesi dibuka
Opsi?authSource=adminPengaturan 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:

text
mongodb+srv://budi:[email protected]/?retryWrites=true&w=majority

Awalan 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:

js
encodeURIComponent("[email protected]:P@ss w0rd")

Output yang Dihasilkan:

text
budi%40example.com%3AP%40ss%20w0rd

Baca 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:

ParameterContoh nilaiArti
authSourceadminDatabase tempat kredensial divalidasi
replicaSetrs0Nama replica set yang dituju
directConnectiontrueSambung langsung ke satu host tanpa penemuan topologi
tlstrueAktifkan enkripsi koneksi (wajib untuk Atlas)
retryWritestrueUlangi sekali operasi tulis yang gagal karena gangguan jaringan
appNameaplikasi-tokoLabel 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:

js
const u = new URL("mongodb://budi:[email protected]:27017/latihan?authSource=admin")
u.protocol
u.username
u.hostname
u.pathname
u.search

Output yang Dihasilkan:

text
mongodb:
budi
127.0.0.1
/latihan
?authSource=admin

Mari 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() di mongosh menghitungnya.
  • Parameter penting: authSource, replicaSet, directConnection, tls, retryWrites, dan appName.
  • Kelas URL di mongosh bisa membedah URI menjadi protocol, username, hostname, pathname, dan search.