次のいずれかの形式を使用して、MongoDB 接続文字列を指定できます。
SRV 接続形式: DNS SRVレコードに対応するホスト名を含む接続文字列。ドライバーまたは はレコードをクエリして、
mongosh
またはmongod
mongos
インスタンスを実行中いるホストを判断します。標準接続文字列 形式:
mongod
またはmongos
インスタンスを実行しているすべてのホストを指定する接続文字列。
MongoDB Atlasクラスターは、オンラインアーカイブに接続しない限り、SRV 接続形式を使用します。
接続文字列で指定されたホストとポートに直接接続するには、directConnection
オプションをtrue
に設定します。directConnection
およびその他の接続文字列オプションの詳細については、「接続文字列オプション」を参照してください。
SRV 接続形式
MongoDB は、DNS で構築された シード リスト をサポートしています。DNS を使用して使用可能なサーバー リストを作成しておくことで、配置の柔軟性が向上し、クライアントの再構成不要でサーバーのローテションが可能となります。
SRV URI 接続スキームの形式は次のとおりです。
mongodb+srv://[username:password@]host[/[defaultauthdb][?options]]
その他の例については、次のページを参照してください。
接続文字列コンポーネント
接続文字列には、次のコンポーネントが含まれます。
コンポーネント | 説明 | |
---|---|---|
| 標準接続形式( | |
| 任意。認証資格情報。 指定した場合、クライアントは ユーザー名またはパスワードに次の文字が含まれている場合、それらの文字は パーセント エンコーディング を使用して変換する必要があります。
| |
|
ポート番号が指定されていない場合は、デフォルトのポート SRV URI 接続形式を使用する場合は、ホストを 1 つだけ指定し、ポートは指定しないでください。それ以外の場合は、ドライバーまたは | |
| 任意。 接続stringに
重要: SRV 接続形式を使用する Atlas 配置の場合、 | |
| 任意。 接続固有のオプションを 接続文字列でデータベースが指定されていない場合は、最後の |
DNSシードリストを使用するには、標準の mongodb+srv
mongodb
ではなく のプレフィックスを持つ標準の接続文字列と同じ構文を使用します。+srv
は、それに続くホスト名が DNS SRVレコードに対応していることをクライアントに示します。ドライバーまたは mongosh
は DNS でレコードをクエリして、mongod
または mongos
インスタンスを実行中いるホストを判断します。
注意
+srv
形式を使用する場合は、hostname
、domain
、および top-level domain (TLD)
を次の形式で指定する必要があります: <hostname>.<domain>.<TLD>.
次の表は、プレースホルダーがサンプル値にどのように対応しているかを示しています。
プレースホルダー | 例 |
---|---|
|
|
|
|
|
|
|
|
この例では、<hostname>.<domain>.<TLD>
形式を正しく使用する DNS シード リスト 接続文字列を示しています。パスワード D1fficultP%40ssw0rd
を使用してユーザー myDatabaseUser
として認証します。
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@server.example.com/
対応する DNS 構成は次のようになります。
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.
個々の SRV レコードは _mongodb._tcp.<hostname>.<domain>.<TLD>
形式である必要があります。
クライアントがシードリストのメンバーに接続すると、クライアントは接続できるレプリカセットメンバーのリストを検索します。クライアントはシード リストで DNS エイリアスを使用することが多いため、ホストは元のシードリストとは異なるサーバーリストを返す可能性があります。このような場合、クライアントはシードリストにリストされているホスト名ではなく、レプリカセットによって提供されるホスト名を使用して、結果のレプリカセット構成内のホスト名を介してレプリカセットメンバーにアクセスできるようにします。
重要
SRV レコードで返されるホスト名は、指定されたホスト名と同じ親ドメイン(この例では 、example.com
)を共有する必要があります。親ドメインとホスト名が一致しない場合は接続できません。
標準の接続文字列と同様に、DNS シード リストの接続文字列では、クエリ文字列としてオプションを指定することができます。DNSシードリスト文字列 は、TXTレコードで以下のオプションを指定することもできます。
replicaSet
authSource
mongod
インスタンスごとに指定できる TXTレコードは1 つだけです。DNS に複数の TXT レコードが存在する場合、または TXTレコードに replicaSet
または authSource
以外のオプションが含まれている場合、クライアントはエラーを返します。
server.example.com
DNS エントリの TXTレコードは次の例のようになります。
Record TTL Class Text server.example.com. 86400 IN TXT "replicaSet=mySet&authSource=authDB"
DNS SRV レコードと TXT レコードで指定されたオプションを組み合わせると、次の標準形式の接続文字列が解決されます。
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongodb1.example.com:27317,mongodb2.example.com:27017/?replicaSet=mySet&authSource=authDB
TXTレコードで指定されたオプションを上書きするには、クエリ文字列で オプションを指定します。 例、次のクエリ文字列は、前の DNS エントリの TXTレコードで構成されている authSource
オプションを上書きします。
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@server.example.com/?connectTimeoutMS=300000&authSource=aDifferentAuthDB
authSource
のオーバーライドを指定すると、標準形式の同等の接続文字列は次の例のようになります。
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongodb1.example.com:27317,mongodb2.example.com:27017/?connectTimeoutMS=300000&replicaSet=mySet&authSource=aDifferentAuthDB
注意
接続stringで識別されたホスト名に対応するDNS レコードが利用できない場合、mongodb+srv
オプションは失敗します。 +srv
接続string修飾子を使用する場合、接続のためにtls
(または同等のssl
)オプションは true
に設定されます。 この動作は、クエリtls
ssl
false
tls=false
ssl=false
stringで (または )を使用して (または同等の )オプションを明示的に設定することで上書きできます。
DNS シードリスト接続形式を使用してmongosh
をレプリカセットに接続する例については、「 mongosh 接続オプション 」を参照してください。
標準接続文字列形式
このセクションでは、セルフホスト型 MongoDB スタンドアロン配置、レプリカセット、またはシャード クラスターに接続するために使用される MongoDB 接続 URI の標準形式について説明します。
標準の URI 接続スキームの形式は次のとおりです。
mongodb://[username:password@]host1[:port1][,...hostN[:portN]][/[defaultauthdb][?options]]
接続文字列データベース オプション
接続文字列の [/defaultauthdb]
フィールドでデフォルトのデータベースを指定できます。 クライアントは、指定された [/defaultauthdb]
データベースをデフォルトのデータベースとして使用します。接続文字列で指定されていない場合、 MongoDB はデフォルトの として test
データベースを使用します。
authSource
接続オプションを使用して、接続文字列で認証データベースを指定できます。指定すると、クライアントはこのデータベースを使用してユーザーの ID と認証情報を確認します。authSource
を指定しない場合、デフォルトでは [/defaultauthdb]
データベースが使用されます。authSource
と [/defaultauthdb]
の両方が指定されていない場合、authSource
はデフォルトで admin
データベースを使用します。
次の接続文字列の例では、デフォルトのデータベースを myDefaultDB
に設定し、認証データベースを admin
に設定します。
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com:27017/myDefaultDB?authSource=admin
接続文字列コンポーネント
接続文字列には、次のコンポーネントが含まれます。
コンポーネント | 説明 | |
---|---|---|
| 標準接続形式( | |
| 任意。認証資格情報。 指定した場合、クライアントは ユーザー名またはパスワードに次の文字が含まれている場合、それらの文字は パーセント エンコーディング を使用して変換する必要があります。
| |
|
ポート番号が指定されていない場合は、デフォルトのポート SRV URI 接続形式を使用する場合は、ホストを 1 つだけ指定し、ポートは指定しないでください。それ以外の場合は、ドライバーまたは | |
| 任意。 接続stringに
重要: SRV 接続形式を使用する Atlas 配置の場合、 | |
| 任意。 接続固有のオプションを 接続文字列でデータベースが指定されていない場合は、最後の |