Docs Menu
Docs Home
/
データベース マニュアル
/ /

接続文字列の形式

次のいずれかの形式を使用して、MongoDB 接続文字列を指定できます。

MongoDB Atlasクラスターは、オンラインアーカイブに接続しない限り、SRV 接続形式を使用します。

接続文字列で指定されたホストとポートに直接接続するには、directConnection オプションをtrueに設定します。directConnectionおよびその他の接続文字列オプションの詳細については、「接続文字列オプション」を参照してください。

MongoDB は、DNS で構築された シード リスト をサポートしています。DNS を使用して使用可能なサーバー リストを作成しておくことで、配置の柔軟性が向上し、クライアントの再構成不要でサーバーのローテションが可能となります。

SRV URI 接続スキームの形式は次のとおりです。

mongodb+srv://[username:password@]host[/[defaultauthdb][?options]]

その他の例については、次のページを参照してください。

接続文字列には、次のコンポーネントが含まれます。

コンポーネント
説明

mongodb:// or mongodb+srv://

標準接続形式(mongodb://)または SRV 接続形式(mongodb+srv://)の string であることを識別する必須のプレフィックス。 各形式の詳細については、「 標準接続文字列形式 」および「 SRV 接続形式 」を参照してください。

username:password@

任意。認証資格情報。

指定した場合、クライアントはauthSourceに対してユーザーの認証を試行します。 authSourceが指定されていない場合、クライアントはdefaultauthdbに対してユーザーの認証を試行します。 また、 defaultauthdbを指定しない場合は、 adminデータベースに対してユーザーの認証を試行します。

ユーザー名またはパスワードに次の文字が含まれている場合、それらの文字は パーセント エンコーディング を使用して変換する必要があります。

$ : / ? # [ ] @

authSource も参照してください。

host[:port]

mongod インスタンス(またはシャード クラスターの場合は mongos インスタンス)が実行されているホスト(およびオプションのポート番号)。ホスト名、IP アドレス、または UNIX ドメイン ソケットを指定できます。配置のトポロジーに応じて適切な数のホストを指定します。

  • スタンドアロンの場合は、スタンドアロン mongod インスタンスのホスト名を指定します。

  • レプリカセットの場合は、レプリカセット構成にリストされている mongod インスタンスのホスト名を指定します。

  • シャード クラスターの場合は、mongos インスタンスのホスト名を指定します。

ポート番号が指定されていない場合は、デフォルトのポート 27017 が使用されます。

SRV URI 接続形式を使用する場合は、ホストを 1 つだけ指定し、ポートは指定しないでください。それ以外の場合は、ドライバーまたは mongosh で解析エラーが発生し、DNS 解決が実行されません。

/defaultauthdb

任意。 接続stringに username:password@ 認証情報が含まれているが、 authSourceオプションが指定されていない場合に使用する認証データベース。

authSourcedefaultauthdb の両方が指定されていない場合、クライアントはadminデータベースに対して指定されたユーザーで認証を試みます。詳しくは、authSource を参照してください。

重要: SRV 接続形式を使用する Atlas 配置の場合、TXT DNSレコードauthSource は自動的に admin に設定されます。Atlas 配置への接続の詳細については、「 Atlas クラスターへの接続 」を参照してください。

?<options>

任意。 接続固有のオプションを <name>=<value> ペアとして指定するクエリstringです。 これらのオプションについて詳しくは、「接続stringオプション 」を参照してください。

接続文字列でデータベースが指定されていない場合は、最後の host とオプションの文字列を開始する疑問符(?)の間にスラッシュ(/)を指定する必要があります。

DNSシードリストを使用するには、標準の mongodb+srvmongodbではなく のプレフィックスを持つ標準の接続文字列と同じ構文を使用します。+srv は、それに続くホスト名が DNS SRVレコードに対応していることをクライアントに示します。ドライバーまたは mongosh は DNS でレコードをクエリして、mongod または mongos インスタンスを実行中いるホストを判断します。

注意

+srv接続文字列修飾子を使用すると、接続により tls(または同等の ssl)オプションが true に自動的に設定されます。この動作をオーバーライドするには、接続クエリ文字列で tls(または同等の ssl)オプションを明示的に false に設定します。

+srv 形式を使用する場合は、hostnamedomain、および top-level domain (TLD) を次の形式で指定する必要があります: <hostname>.<domain>.<TLD>. 次の表は、プレースホルダーがサンプル値にどのように対応しているかを示しています。

プレースホルダー

<hostname>

server

<domain>

example

<TLD>

com

<hostname>.<domain>.<TLD>

server.example.com

この例では、<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.comDNS エントリの 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 sslfalsetls=falsessl=falsestringで (または )を使用して (または同等の )オプションを明示的に設定することで上書きできます。

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

接続文字列には、次のコンポーネントが含まれます。

コンポーネント
説明

mongodb:// or mongodb+srv://

標準接続形式(mongodb://)または SRV 接続形式(mongodb+srv://)の string であることを識別する必須のプレフィックス。 各形式の詳細については、「 標準接続文字列形式 」および「 SRV 接続形式 」を参照してください。

username:password@

任意。認証資格情報。

指定した場合、クライアントはauthSourceに対してユーザーの認証を試行します。 authSourceが指定されていない場合、クライアントはdefaultauthdbに対してユーザーの認証を試行します。 また、 defaultauthdbを指定しない場合は、 adminデータベースに対してユーザーの認証を試行します。

ユーザー名またはパスワードに次の文字が含まれている場合、それらの文字は パーセント エンコーディング を使用して変換する必要があります。

$ : / ? # [ ] @

authSource も参照してください。

host[:port]

mongod インスタンス(またはシャード クラスターの場合は mongos インスタンス)が実行されているホスト(およびオプションのポート番号)。ホスト名、IP アドレス、または UNIX ドメイン ソケットを指定できます。配置のトポロジーに応じて適切な数のホストを指定します。

  • スタンドアロンの場合は、スタンドアロン mongod インスタンスのホスト名を指定します。

  • レプリカセットの場合は、レプリカセット構成にリストされている mongod インスタンスのホスト名を指定します。

  • シャード クラスターの場合は、mongos インスタンスのホスト名を指定します。

ポート番号が指定されていない場合は、デフォルトのポート 27017 が使用されます。

SRV URI 接続形式を使用する場合は、ホストを 1 つだけ指定し、ポートは指定しないでください。それ以外の場合は、ドライバーまたは mongosh で解析エラーが発生し、DNS 解決が実行されません。

/defaultauthdb

任意。 接続stringに username:password@ 認証情報が含まれているが、 authSourceオプションが指定されていない場合に使用する認証データベース。

authSourcedefaultauthdb の両方が指定されていない場合、クライアントはadminデータベースに対して指定されたユーザーで認証を試みます。詳しくは、authSource を参照してください。

重要: SRV 接続形式を使用する Atlas 配置の場合、TXT DNSレコードauthSource は自動的に admin に設定されます。Atlas 配置への接続の詳細については、「 Atlas クラスターへの接続 」を参照してください。

?<options>

任意。 接続固有のオプションを <name>=<value> ペアとして指定するクエリstringです。 これらのオプションについて詳しくは、「接続stringオプション 」を参照してください。

接続文字列でデータベースが指定されていない場合は、最後の host とオプションの文字列を開始する疑問符(?)の間にスラッシュ(/)を指定する必要があります。

戻る

オプション

項目一覧