MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

String Koneksi di MongoDB (dengan contoh)

Agar aplikasi terhubung ke server database, mereka harus menggunakan string koneksi, yang merupakan ekspresi yang berisi semua parameter yang diperlukan. String koneksi menyediakan instance server, nama database, detail otentikasi, dan parameter lain untuk berinteraksi dengan server database.

Format untuk string koneksi

Salah satu dari metode yang diberikan akan menyiapkan string koneksi MongoDB. Format Koneksi Daftar Benih DNS atau Format String Koneksi Standar.

Format standar untuk menghubungkan string

Ada tiga tipe dasar penerapan MongoDB:standalone, replica set, dan sharded cluster, semuanya dijelaskan di sini.

Ini adalah cara umum untuk bergabung dengan URI.

mongodb://[username:password@]host1[:port1][,...hostN[:portN]][/[defaultauthdb][?options]]

Contoh:

Mandiri
mongodb://mongodb0.example.com:27017
Mandiri yang memberlakukan kontrol akses:
mongodb://myDBReader:D1fficultP%[email protected]:27017/?authSource=admin
Set replika
mongodb://mongodb0.example.com:27017,mongodb1.example.com:27017,mongodb2.example.com:27017/?replicaSet=myRepl
Set replika yang memberlakukan kontrol akses:
mongodb://myDBReader:D1fficultP%[email protected]:27017,mongodb1.example.com:27017,mongodb2.example.com:27017/?authSource=admin&replicaSet=myRepl
Kluster yang di-shard
mongodb://mongos0.example.com:27017,mongos1.example.com:27017,mongos2.example.com:27017
Cluster yang di-sharding yang memberlakukan kontrol akses:
mongodb://myDBReader:D1fficultP%[email protected]:27017,mongos1.example.com:27017,mongos2.example.com:27017/?authSource=admin

Komponen string koneksi

Komponen string koneksi URI standar:

  1. mongodb:// – Awalan yang diperlukan yang menunjukkan string koneksi standar.
  2. nama pengguna:kata sandi@ – Kredensial otentikasi adalah opsional. Jika authSource diberikan, klien akan mencoba mengotentikasi pengguna. Tanpa menentukan authSource, klien akan memverifikasi pengguna terhadap defaultauthdb. Selain itu, database admin digunakan jika defaultauthdb tidak diberikan.
  3. host[:port] – Host (dan secara opsional nomor port) tempat instance mongod beroperasi (atau instance mongos dalam kasus sharded cluster). Anda dapat menunjukkan nama host, alamat IP, atau soket di domain UNIX. Tunjukkan jumlah host yang diperlukan untuk topologi peluncuran Anda:
    Dalam kasus satu instance mongod, berikan nama host dari instance mongod.
    Berikan nama host dari instance mongod yang ditentukan dalam pengaturan set replika untuk set replika.
    Tunjukkan nama host instance mongos untuk sharded cluster. Tanpa menentukan nomor port, port generik 27017 akan digunakan.
  4. /defaultauthdb – Opsional. Jika string koneksi berisi nama pengguna:kata sandi@ kredensial, tetapi opsi authSource tidak disediakan, database otentikasi digunakan. Klien menggunakan database admin untuk mengautentikasi pengguna jika authSource dan defaultauthdb tidak diberikan.
  5. ? Opsional. Parameter khusus koneksi ditentukan dalam pasangan name>=value> dalam string kueri. Daftar pilihan yang tersedia dapat dilihat di bagian Connection String Options. Garis miring (/) harus disertakan di antara host dan tanda tanya (?) untuk memulai string opsi jika tidak ada database yang ditentukan dalam string koneksi.

Format Koneksi untuk Daftar Benih DNS

Ada juga daftar benih yang dibangun DNS untuk koneksi MongoDB. Menggunakan DNS untuk membuat daftar server yang dapat diakses menawarkan lebih banyak fleksibilitas penerapan dan kemampuan untuk berpindah server dalam siklus tanpa mengonfigurasi ulang klien.

Gunakan awalan mongodb+srv alih-alih awalan string koneksi MongoDB biasa untuk menggunakan daftar benih DNS. Untuk memberi tahu pengguna bahwa nama host berikut adalah data SRV DNS, gunakan awalan +srv. Setelah itu, mongosh atau driver akan menanyakan sistem nama domain (DNS) untuk menemukan host mana yang menjalankan instance mongod.

Catatan: Opsi tls (atau ssl yang sesuai) disetel ke true jika variabel string koneksi +srv digunakan. Dengan secara eksplisit menetapkan opsi tls ke false dalam string kueri, Anda dapat mengganti perilaku ini dan menggunakan tls=false sebagai gantinya.

String koneksi daftar seed DNS sering terlihat seperti contoh berikut:

mongodb+srv://server.example.com/

Pengaturan DNS dapat terlihat seperti ini:

Record                            TTL   Class    Priority Weight Port  Target

_mongodb._tcp.server.example.com. 86400 IN SRV   0        5      27317 mongodb1.example.com.

_mongodb._tcp.server.example.com. 86400 IN SRV   0        5      27017 mongodb2.example.com.

Menghubungkan dengan anggota daftar benih memberi klien akses ke direktori anggota kumpulan replika lainnya untuk membuat koneksi. Tuan rumah dapat menghasilkan daftar server yang berbeda dari daftar benih karena klien biasanya menggunakan alias DNS dalam daftar benih mereka. Anggota kumpulan replika hanya dapat diakses melalui nama host mereka; oleh karena itu, jika ini terjadi, pengguna akan menggunakan nama host yang diberikan oleh replikasi daripada yang disebutkan dalam daftar benih.

Catatan: Catatan SRV yang disediakan oleh nama host yang ditentukan harus memiliki domain induk yang sama (example.com) sebagai nama host itu sendiri. Anda tidak akan diizinkan untuk terhubung jika domain induk dan nama host tidak cocok.

Selain itu, string koneksi daftar seed DNS memungkinkan Anda memberikan parameter sebagai bagian dari URL dengan cara yang sama seperti yang biasa dilakukan. Anda juga dapat menggunakan data TXT untuk menunjukkan setelan berikut saat menggunakan string koneksi daftar benih DNS:

authSource
replicaSet

Hanya satu record TXT yang dapat ditentukan untuk setiap instance mongod. Klien akan mengembalikan kesalahan jika DNS memiliki beberapa entri TXT atau jika entri TXT berisi atribut selain replicaSet atau authSource.

Data TXT untuk server.example.com akan terlihat seperti ini:

Record              TTL   Class    Text

server.example.com. 86400 IN TXT   "replicaSet=mySet&authSource=authDB"

String koneksi ini dihasilkan dari entri DNS SRV serta pengaturan data TXT sebagai berikut:

mongodb://mongodb1.example.com:27317,mongodb2.example.com:27017/?replicaSet=mySet&authSource=authDB

Pilihan data TXT dapat diganti dengan menyediakan parameter string kueri URL. String kueri dalam skenario berikut menimpa opsi authSource yang disetel dalam data TXT entri DNS.

mongodb+srv://server.example.com/?connectTimeoutMS=300000&authSource=aDifferentAuthDB

Menggunakan penggantian authSource, string koneksi tipikal akan terlihat seperti ini:

mongodb://mongodb1.example.com:27317,mongodb2.example.com:27017/?connectTimeoutMS=300000&replicaSet=mySet&authSource=aDifferentAuthDB

Catatan: Jika nama host yang ditentukan dalam string koneksi tidak memiliki catatan DNS yang terkait dengannya, parameter mongodb+srv akan gagal. Sebagai catatan terakhir, saat menggunakan modifikasi string koneksi +srv, opsi untuk menggunakan TLS (atau keamanan SSL yang setara) disetel ke true untuk koneksi. Dengan secara eksplisit menetapkan opsi tls ke false dalam string kueri, Anda dapat mengganti perilaku ini dan menggunakan tls=false sebagai gantinya.

Dapatkan string koneksi MongoDB Anda

Anda memerlukan string URI untuk terhubung ke MongoDB. Jika Anda menautkan ke penerapan MongoDB menggunakan shell mongo, Kompas, atau driver MongoDB, Anda akan dimintai URI (Uniform Resource Identifier).

Diasumsikan bahwa Anda telah menyiapkan autentikasi di MongoDB dan membuat nama pengguna dan sandi untuk hak baca dan tulis ke database MongoDB saat menggunakan string URI yang disediakan.

Dalam hal ini, Anda dapat menggunakan login dan sandi yang Anda buat untuk peran readWriteAnyDatabase serta nama database admin di string koneksi Anda untuk terhubung ke MongoDB.

Opsi untuk String Koneksi

Bagian ini menjelaskan berbagai cara Anda dapat terhubung ke Internet.

  1. Dalam bentuk pasangan nama=nilai, opsi koneksi tersedia.
  2. Saat menggunakan driver, nama opsi tidak peka huruf besar/kecil.
  3. Nama opsi tidak peka huruf besar/kecil saat menggunakan mongosh atau shell mongo tradisional (versi 4.2 atau lebih baru).
  4. Nama opsi peka huruf besar/kecil saat menggunakan versi 4.0 atau shell mongo lawas yang lebih lama.
  5. Kasus tidak pernah menjadi masalah saat menampilkan nilai.

Huruf ampersand (&) dapat memisahkan pilihan, seperti nama1=nilai1&nama2=nilai2. Parameter ReplicaSet dan connectTimeoutMS disertakan dalam koneksi berikut:

mongodb://db1.example.net:27017,db2.example.net:2500/?replicaSet=test&connectTimeoutMS=300000

Catatan: Driver sekarang menerima titik koma (;) sebagai pemisah opsi untuk menjaga kompatibilitas dengan perangkat lunak lama.

Contoh String Koneksi

Anda akan menemukan contoh URI untuk titik koneksi populer dalam contoh di bawah ini.

Jalankan Server Database secara lokal

Port default server database lokal dapat digunakan untuk membuat koneksi dengan perintah berikut:

mongodb://localhost
Database Administratif

Untuk masuk ke database admin sebagai foss dengan kata sandi fosslinux, perintah berikut harus diikuti:

mongodb://foss:fosslinux@localhost
Database catatan

Menghubungkan dan masuk ke database catatan menggunakan kata sandi fosslinux sebagai administrator sistem.

mongodb://foss:fosslinux@localhost/records
Soket Domain di UNIX

Saat memasang ke soket domain UNIX, gunakan string koneksi terenkripsi URL.

MongoDB menautkan ke titik akhir domain UNIX dengan jalur berikut:

mongodb://%2Ftmp%2Fmongodb-27017.sock

Catatan: semua driver tidak mendukung soket domain UNIX. Untuk mempelajari lebih lanjut tentang driver Anda, buka bagian dokumentasi Driver.

Replika disetel dengan pengguna di mesin yang berbeda

Di bawah ini adalah koneksi ke set replika dua anggota di db1.example.net dan db2.example.net:

mongodb://db1.example.net,db2.example.com/?replicaSet=test

Catatan: Instance mongod yang disediakan dalam konfigurasi set replika harus ditentukan untuk set replika.

Set Replika dengan pengguna di localhost

Port 27017, 27018, dan 27019 digunakan untuk membuat koneksi ke set replika yang beroperasi di localhost:

mongodb://localhost,localhost:27018,localhost:27019/?replicaSet=test
Baca Kumpulan Replika Distribusi

Menghubungkan ke set replika tiga anggota dan mendistribusikan bacaan ke anggota sekunder memerlukan metode yang tercantum di bawah ini:

mongodb://example1.com,example2.com,example3.com/?replicaSet=test&readPreference=secondary
Set Replika Kekhawatiran Tulis Tingkat Tinggi

Menghubungkan ke set replika yang berisi masalah penulisan dan batas waktu dua detik sambil menunggu replikasi di sebagian besar anggota pemungutan suara yang membawa data dilakukan dengan menggunakan konfigurasi ini:

mongodb://example1.com,example2.com,example3.com/?replicaSet=test&w=majority&wtimeoutMS=2000
Kluster Bersama

Dimungkinkan untuk terhubung ke cluster sharded multi-instance menggunakan yang berikut:

mongodb://router1.example.com:27017,router2.example2.com:27017,router3.example3.com:27017/
Kluster Atlas MongoDB

Berikut ini membuat koneksi ke klaster MongoDB Atlas menggunakan kredensial AWS IAM untuk autentikasi:

mongosh 'mongodb+srv://<aws access key id>:<aws secret access key>@cluster0.example.com/testdb?authSource=$external&authMechanism=MONGODB-AWS'

Contoh ini menunjukkan cara menggunakan metode autentikasi MONGODB-AWS dan $external authSource untuk terhubung ke Atlas melalui kredensial AWS IAM.

Nilai authMechanismProperties AWS SESSION TOKEN harus diberikan jika Anda menggunakan token sesi AWS, sebagai berikut:

mongosh 'mongodb+srv://<aws access key id>:<aws secret access key>@cluster0.example.com/testdb?authSource=$external&authMechanism=MONGODB-AWS&authMechanismProperties=AWS_SESSION_TOKEN:<aws session token>'

Catatan: Selama ID kunci akses AWS atau Kunci Akses Rahasia berisi salah satu karakter berikut:(: / ? # [ ] @ ), Anda harus menggunakan penyandian persen untuk menyandikannya.

Anda juga dapat menggunakan variabel lingkungan AWS IAM reguler untuk menentukan kredensial ini di platform Anda. Saat menggunakan autentikasi MONGODB-AWS, mongosh akan memeriksa dan memastikan apakah variabel lingkungan berikut ada:

  • AWS_ACCESS_KEY_ID
  • AWS_SECRET_ACCESS_KEY
  • AWS_SESSION_TOKEN

String koneksi tidak perlu menyertakan kredensial ini jika dikonfigurasi.

Di bash shell, variabel berikut diatur dalam contoh berikut:

export AWS_ACCESS_KEY_ID='<aws access key id>'

export AWS_SECRET_ACCESS_KEY='<aws secret access key>'

export AWS_SESSION_TOKEN='<aws session token>'

Sintaks untuk menetapkan variabel lingkungan akan berbeda di shell lain, jadi perhatikan hal ini. Untuk informasi lebih lanjut, buka dokumentasi platform Anda.

Perintah berikut akan mengkonfirmasi apakah variabel lingkungan tertentu telah disetel atau belum:

env | grep AWS

Kode berikut menunjukkan cara membuat koneksi ke cluster MongoDB Atlas dengan menggunakan variabel yang tercantum di bawah ini:

mongosh 'mongodb+srv://cluster0.example.com/testdb?authSource=$external&authMechanism=MONGODB-AWS'

Itu saja yang perlu Anda ketahui tentang string koneksi di MongoDB. Kami harap Anda menemukan panduan artikel bermanfaat. Jika ya, silakan tinggalkan komentar di bagian komentar. Terima kasih telah membaca.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB $acosh

  2. Kapan ke Redis? Kapan ke MongoDB?

  3. C# kueri mongo dengan string json

  4. mongodb menghitung jumlah nilai yang berbeda per bidang/kunci

  5. Sesi Musim Semi dengan MongoDB