Docs Menu
Docs Home
/
MongoDBマニュアル
/

接続文字列

項目一覧

  • 互換性
  • MongoDB Atlas 接続文字列を見つける
  • セルフホスト型配置の接続文字列を見つける
  • 接続文字列の形式
  • SRV 接続形式
  • 標準接続文字列形式

➤ 右上の言語の選択ドロップダウンメニューを使用して、以下の例の言語を設定します。


接続文字列を使用して、MongoDB インスタンスと次の宛先間の接続を定義できます。

  • ドライバーを使用して接続する場合のアプリケーション。

  • MongoDB CompassMongoDB Shell(mongosh)などのツール。

以下の環境でホストされている配置に接続するには、接続文字列を使用します。

  • MongoDB Atlas はクラウドでの MongoDB 配置のためのフルマネージド サービスです

  • MongoDB Enterprise: サブスクリプションベースの自己管理型 MongoDB バージョン

  • MongoDB Community: ソースが利用可能で、無料で使用できる自己管理型の MongoDB のバージョン

接続文字列を見つけるには、次の手順に従います。

Atlas CLI を使用して MongoDB Atlas 接続文字列を見つけるには、Atlas CLIインストールして接続し、次のコマンドを実行します。<clusterName> を MongoDB Atlas クラスター名に、<projectId> をプロジェクト ID に置き換えます。

atlas clusters connectionStrings describe <clusterName> --projectId <projectId>

詳しくは、「 Atlas clusters connectionStrings describe 」を参照してください。

Atlas UI で MongoDB Atlas 接続文字列を見つけるには、次の手順を実行します。

1
  1. まだ表示されていない場合は、希望するプロジェクトを含む組織を選択しますナビゲーション バーのOrganizationsメニュー

  2. まだ表示されていない場合は、ナビゲーション バーの Projects メニューからプロジェクトを選択します。

  3. まだ表示されていない場合は、サイドバーの Clusters をクリックしてください。

    [ Clusters (クラスター) ] ページが表示されます。

2
  1. 接続するクラスターの Connect をクリックします。

  2. Choose a Connection Method をクリックします。MongoDB Atlas はデフォルトでStandard Connection を選択します。プライベートエンドポイントを使用して接続するには、 Private Endpoint を選択します。

3

アプリケーションに接続するには、[Drivers] をクリックします。ツールを使用して接続するには、データへのアクセスに使用するツールをクリックします。

4
  1. Drivers を選択した場合、ドライバーとバージョンを選択します。ツールを選択した場合は、ツールをダウンロードします。

  2. Connect To Cluster を選択します。

  3. 接続文字列をコピーします。接続文字列内の <password><username> をデータベースユーザーの認証情報に置き換えます。

MongoDB Atlas の接続文字列は次の例のようになります。

mongosh "mongodb+srv://cluster0.example.mongodb.net myFirstDatabase" --apiVersion 1 --username myDatabaseUser
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@cluster0.example.mongodb.net/
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@cluster0.example.mongodb.net/
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@cluster0.example.mongodb.net/
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@cluster0.example.mongodb.net/?retryWrites=true&w=majority
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@cluster0.example.mongodb.net/?retryWrites=true&w=majority
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@cluster0.example.mongodb.net/
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@cluster0.example.mongodb.net/?retryWrites=true&w=majority
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@cluster0.example.mongodb.net/?retryWrites=true&w=majority
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@cluster0.example.mongodb.net/?retryWrites=true&w=majority
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@cluster0.example.mongodb.net/?retryWrites=true&w=majority
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@cluster0.example.mongodb.net/?retryWrites=true&w=majority
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@cluster0.example.mongodb.net/
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@cluster0.example.mongodb.net/?retryWrites=true&w=majority

セルフホスト型 MongoDB Enterprise または MongoDB Community 配置に接続している場合、db.getMongo() メソッドを実行して接続文字列を返します。

配置に接続していない場合は、使用する接続タイプに基づいて接続stringを決定できます。 SRV 接続string の構文を学習するには「 SRVstring 接続形式string 」を参照してください。標準の接続 構文を学習するには「 標準接続文字 形式 」を参照してください。

セルフホスト接続文字列は次の例のようになります。

次のレプリカセット接続文字列には、これらの要素が含まれます。

  • replicaSetオプション

  • レプリカセット構成に記載されている mongod インスタンスのホスト名

  • ユーザー myDatabaseUser とパスワード D1fficultP%40ssw0rd で認証し、アクセス制御を強制します

mongosh "mongodb+srv://mongodb0.example.com/?authSource=admin&replicaSet=myRepl" --apiVersion 1 --username myDatabaseUser
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com/?authSource=admin&replicaSet=myRepl
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com/?authSource=admin&replicaSet=myRepl
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com/?authSource=admin&replicaSet=myRepl
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com/?authSource=admin&replicaSet=myRepl
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com/?authSource=admin&replicaSet=myRepl
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com:27017,mongodb1.example.com:27017,mongodb2.example.com:27017/?authSource=admin&replicaSet=myRepl
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com/?authSource=admin&replicaSet=myRepl
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com/?authSource=admin&replicaSet=myRepl
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com/?authSource=admin&replicaSet=myRepl
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com/?authSource=admin&replicaSet=myRepl
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com/?authSource=admin&replicaSet=myRepl
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com/?authSource=admin&replicaSet=myRepl
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com/?authSource=admin&replicaSet=myRepl

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

$ : / ? # [ ] @

次のシャーディングされたクラスターの接続文字列には、これらの要素が含まれます。

mongosh "mongodb+srv://mongos0.example.com/?authSource=admin" --apiVersion 1 --username myDatabaseUser
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongos0.example.com/?authSource=admin
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongos0.example.com/?authSource=admin
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongos0.example.com/?authSource=admin
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongos0.example.com/?authSource=admin
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongos0.example.com/?authSource=admin
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongos0.example.com:27017,mongos1.example.com:27017,mongos2.example.com:27017/?authSource=admin
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongos0.example.com/?authSource=admin
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongos0.example.com/?authSource=admin
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongos0.example.com/?authSource=admin
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongos0.example.com/?authSource=admin
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongos0.example.com/?authSource=admin
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongos0.example.com/?authSource=admin
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongos0.example.com/?authSource=admin

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

$ : / ? # [ ] @

次のスタンドアロン接続文字列は、パスワード D1fficultP%40ssw0rd を使用してユーザー myDatabaseUser として認証し、アクセス制御を強制します。

mongosh "mongodb+srv://mongodb0.example.com/?authSource=admin" --apiVersion 1 --username myDatabaseUser
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com/?authSource=admin
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com/?authSource=admin
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com/?authSource=admin
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com/?authSource=admin
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com/?authSource=admin
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com:27017/?authSource=admin
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com/?authSource=admin
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com/?authSource=admin
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com/?authSource=admin
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com/?authSource=admin
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com/?authSource=admin
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com/?authSource=admin
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com/?authSource=admin

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

$ : / ? # [ ] @

次のレプリカセット接続文字列には、これらの要素が含まれます。

mongosh "mongodb://mongodb0.example.com:27017,mongodb1.example.com:27017,mongodb2.example.com:27017/?authSource=admin&replicaSet=myRepl" --apiVersion 1 --username myDatabaseUser
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com:27017,mongodb1.example.com:27017,mongodb2.example.com:27017/?authSource=admin&replicaSet=myRepl
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com:27017,mongodb1.example.com:27017,mongodb2.example.com:27017/?authSource=admin&replicaSet=myRepl
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com:27017,mongodb1.example.com:27017,mongodb2.example.com:27017/?authSource=admin&replicaSet=myRepl
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com:27017,mongodb1.example.com:27017,mongodb2.example.com:27017/?authSource=admin&replicaSet=myRepl
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com:27017,mongodb1.example.com:27017,mongodb2.example.com:27017/?authSource=admin&replicaSet=myRepl
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com:27017,mongodb1.example.com:27017,mongodb2.example.com:27017/?authSource=admin&replicaSet=myRepl
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com:27017,mongodb1.example.com:27017,mongodb2.example.com:27017/?authSource=admin&replicaSet=myRepl
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com:27017,mongodb1.example.com:27017,mongodb2.example.com:27017/?authSource=admin&replicaSet=myRepl
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com:27017,mongodb1.example.com:27017,mongodb2.example.com:27017/?authSource=admin&replicaSet=myRepl
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com:27017,mongodb1.example.com:27017,mongodb2.example.com:27017/?authSource=admin&replicaSet=myRepl
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com:27017,mongodb1.example.com:27017,mongodb2.example.com:27017/?authSource=admin&replicaSet=myRepl
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com:27017,mongodb1.example.com:27017,mongodb2.example.com:27017/?authSource=admin&replicaSet=myRepl
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com:27017,mongodb1.example.com:27017,mongodb2.example.com:27017/?authSource=admin&replicaSet=myRepl

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

$ : / ? # [ ] @

次のシャーディングされたクラスターの接続文字列には、これらの要素が含まれます。

mongosh "mongodb://mongos0.example.com:27017,mongos1.example.com:27017,mongos2.example.com:27017/?authSource=admin" --apiVersion 1 --username myDatabaseUser
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongos0.example.com:27017,mongos1.example.com:27017,mongos2.example.com:27017/?authSource=admin
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongos0.example.com:27017,mongos1.example.com:27017,mongos2.example.com:27017/?authSource=admin
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongos0.example.com:27017,mongos1.example.com:27017,mongos2.example.com:27017/?authSource=admin
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongos0.example.com:27017,mongos1.example.com:27017,mongos2.example.com:27017/?authSource=admin
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongos0.example.com:27017,mongos1.example.com:27017,mongos2.example.com:27017/?authSource=admin
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongos0.example.com:27017,mongos1.example.com:27017,mongos2.example.com:27017/?authSource=admin
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongos0.example.com:27017,mongos1.example.com:27017,mongos2.example.com:27017/?authSource=admin
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongos0.example.com:27017,mongos1.example.com:27017,mongos2.example.com:27017/?authSource=admin
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongos0.example.com:27017,mongos1.example.com:27017,mongos2.example.com:27017/?authSource=admin
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongos0.example.com:27017,mongos1.example.com:27017,mongos2.example.com:27017/?authSource=admin
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongos0.example.com:27017,mongos1.example.com:27017,mongos2.example.com:27017/?authSource=admin
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongos0.example.com:27017,mongos1.example.com:27017,mongos2.example.com:27017/?authSource=admin
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongos0.example.com:27017,mongos1.example.com:27017,mongos2.example.com:27017/?authSource=admin

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

$ : / ? # [ ] @

以下のスタンドアロン接続文字列はアクセス制御を強制します

mongosh "mongodb://@mongodb0.example.com:27017/?authSource=admin" --apiVersion 1 --username myDatabaseUser
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com:27017/?authSource=admin
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com:27017/?authSource=admin
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com:27017/?authSource=admin
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com:27017/?authSource=admin
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com:27017/?authSource=admin
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com:27017/?authSource=admin
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com:27017/?authSource=admin
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com:27017/?authSource=admin
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com:27017/?authSource=admin
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com:27017/?authSource=admin
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com:27017/?authSource=admin
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com:27017/?authSource=admin
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com:27017/?authSource=admin

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

$ : / ? # [ ] @

接続stringオプションの完全なリストについては、「 SRV 接続形式」または「標準接続string形式」を参照してください。 その他の例については、「接続stringの例 」を参照してください。

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

  • SRV 接続形式: DNS SRV レコードに対応するホスト名を含む接続string 。 ドライバーまたはmongoshはレコードをクエリして、 mongodまたはmongosインスタンスを実行しているホストを判断します。

  • 標準接続文字列 形式: mongod または mongos インスタンスを実行しているすべてのホストを指定する接続文字列。

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

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

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

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

その他の例については、「接続stringの例 」を参照してください。

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

コンポーネント
説明
mongodb:// or mongodb+srv://
標準接続形式(mongodb://)または SRV 接続形式(mongodb+srv://)の文字列であることを識別する必須のプレフィックス。各形式ついての詳細は、「標準接続文字列形式」および「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データベースに対して指定されたユーザーで認証を試みます。

?<options>

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

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

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

注意

+srv 接続文字列修飾子を使用すると、接続のためにtls (または同等のssl )オプションが true に自動的に設定されます。 この動作は、クエリ文字列で tls=false (または ssl=false) を使用して、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)を共有する必要があります。親ドメインとホスト名が一致しない場合は接続できません。

この例では、<hostname> が欠落している DNS シード リスト接続文字列を示します。これは誤りであり、エラーが発生します。

# This connection string is missing the <hostname> and raises a connection error
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@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 sslfalsetls=falsessl=falsestringで (または )を使用して (または同等の )オプションを明示的に設定することで上書きできます。

DNS シードリスト接続形式を使用してmongoshをレプリカセットに接続する例については、「 mongosh 接続オプション 」を参照してください。

このセクションでは、セルフホスト型 MongoDB スタンドアロン配置、レプリカセット、またはシャード クラスターに接続するために使用される MongoDB 接続 URI の標準形式について説明します。

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

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

その他の例については、「接続stringの例 」を参照してください。

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

コンポーネント
説明
mongodb:// or mongodb+srv://
標準接続形式(mongodb://)または SRV 接続形式(mongodb+srv://)の文字列であることを識別する必須のプレフィックス。各形式ついての詳細は、「標準接続文字列形式」および「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データベースに対して指定されたユーザーで認証を試みます。

?<options>

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

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

戻る

ロケールとデフォルト パラメーター