このページでは、MongoDB Shell を使用して MongoDB 配置に接続する方法を説明します。MongoDB Shell を使用すると、MongoDB Atlas クラウドホスト型配置、ローカル配置、または別のリモート ホストに接続できます。
前提条件
MongoDB Shell を使用するには、接続する MongoDB 配置が必要です。
無料のクラウドホスト型配置には、MongoDB Atlas を使用できます。
MongoDB をローカル配置の実行方法については、「MongoDB のインストール」を参照してください。
サポートされている MongoDB のバージョン
MongoDB Shell を使用してMongoDBバージョン 7.0 以降に接続できます。
インストール mongosh
以下の手順は mongosh がすでにインストールされていることを前提としています。mongosh のインストールに関する詳細については、「mongosh のインストール」を参照してください。
MongoDB Atlas 配置への接続
MongoDB Atlas 配置には、直接 shell から接続できます。
Atlas 接続文字列の取得
MongoDB Shell から接続するには、Atlas 接続文字列が必要です。MongoDB Atlas の接続文字列は、Atlas UI で取得できます。
詳細については、「MongoDB Atlas 接続文字列の特定」ガイドを参照してください。
データベースの認証情報の設定
データベース ユーザーの作成がまだ完了していない場合は、ユーザー名とパスワードの設定が必要です。 Atlasに接続するには、ユーザー名とともにAtlas接続stringを渡します。 connect コマンドを出すと、shell からパスワードの入力を求められます。
注意
詳細
mongosh 経由で Atlas に接続するには、他の接続セキュリティ オプションを使用できます。ピアリングまたはプライベート エンドポイント接続用のプライベート IP での接続については、「mongosh 経由での Atlas Connect」ドキュメントを参照してください。
デフォルト ポートでのローカル配置への接続
デフォルト ポート 27017 を使用して localhost で実行されている MongoDB の配置に接続するには、mongosh をオプションなしで実行します。
mongosh
これは、次のコマンドと同等です。
mongosh "mongodb://localhost:27017"
デフォルト以外のポートでのローカル配置への接続
ローカルホストへの接続ポートを指定するには、次のいずれかを使用できます。
選択したポートとの接続文字列
--portコマンドライン オプション
たとえば、以下は localhost ポート 28015 で実行中の配置への接続コマンドです。
mongosh "mongodb://localhost:28015"
mongosh --port 28015
リモート ホスト上の配置への接続
リモート ホストとポートを指定するには、次のいずれかを使用できます。
選択したホストとポートとの接続文字列。
--hostと--portのコマンドライン オプション。--portオプションを省略すると、mongoshはデフォルトのポート 27017 を使用します。
たとえば、次のコマンドを使用すると、ホストmongodb0.example.com とポート 28015 で実行されている MongoDB の配置に接続します。
mongosh "mongodb://mongodb0.example.com:28015"
mongosh --host mongodb0.example.com --port 28015
注意
MongoDB Atlas への接続
リモートホストが Atlas クラスターである場合は、Atlas UI から接続文字列をコピーできます。詳細については、Atlas ドキュメントの「クラスターへの接続」を参照してください。
接続オプションの指定
異なるタイプの配置に接続するには、異なる接続オプションを指定します。
認証を使用した接続
認証が必要な MongoDB 配置に接続するには、--username と --authenticationDatabase オプションを使用します。mongosh ではパスワードの入力が指示されます。パスワードは入力時に非表示になります。
たとえば、admin データベースでユーザー alice として認証するには、次のコマンドを実行します。
mongosh "mongodb://mongodb0.example.com:28015" --username alice --authenticationDatabase admin
プロンプトを使用する代わりに、接続コマンドの一部としてパスワードを入力するには、--password オプションを使用します。ドライバーのように、mongosh をプログラムとして使用する場合は、このオプションを選択します。
Tip
配置で認証を強制するには、「アクセス制御の有効化」を参照してください。
MongoDB 配置へのアクセスをプロビジョニングするには、「データベースユーザー」を参照してください。
OpenID Connect を使用した接続
OpenID Connect を使用して配置に接続するには、--authenticationMechanism オプションを MONGODB-OIDC に設定して使用します。mongosh によってリダイレクトされる画面で、IdP のログイン情報を入力してください。
注意
mongoshoidcoffline_accessデフォルトではoidc offline_access、 はIdP(IdP)に と のスコープをリクエストします。 IdP が でも もサポートしていない場合、mongosh はそれらのスコープをリクエストません。 IdP が をサポートするがoidc offline_accessをサポートしない場合は、頻繁に再認証を行う必要があります。詳細については、「 oidcIdentityProviders フィールド 」を参照してください。
たとえば、次の例では、MONGODB-OIDC を使用してローカル配置に接続しています。
mongosh "mongodb://localhost/" --authenticationMechanism MONGODB-OIDC
LDAP を使用した接続
LDAP を使用して配置に接続するには、以下に従います。
--usernameを、security.ldap.authz.queryTemplateまたは構成されたsecurity.ldap.userToDNMappingテンプレートに準拠したユーザー名に設定します。--passwordを適切なパスワードに設定します。--passwordコマンドライン オプションにパスワードを指定しない場合は、mongoshからパスワードの入力を求められます。--authenticationDatabaseを$externalに設定します。shell が$externalを変数と解釈するのを防ぐには、$external引数を二重引用符ではなく一重引用符で囲む必要があります。--authenticationMechanismをPLAINに設定します。
警告
LDAP 認証でワンタイム パスワードを使用する場合は、接続失敗の可能性を減らすために、接続文字列 オプションmaxPoolSize=1&srvMaxHosts=1を接続文字列に追加することをお勧めします。
MongoDB 配置の --host と --port を、配置に関連するその他のオプションとともに含めます。
たとえば、次の操作は、LDAP 認証と承認で実行されている MongoDB 配置に対して認証を行います。
mongosh --username alice@dba.example.com --password --authenticationDatabase '$external' --authenticationMechanism "PLAIN" --host "mongodb.example.com" --port 27017
レプリカセットへの接続
レプリカセットに接続するには、次のいずれかの方法を実行します。
DNS シードリスト接続形式を使用する。
接続文字列でレプリカセット名とノードを明示的に指定する。
重要
レプリカセットがDockerで実行されると、MongoDBのエンドポイントが1つだけ公開される可能性があります。この場合、レプリカセットは検出できず、directConnection=false を指定することでアプリケーションが接続を防ぐことができます。
テスト環境または開発環境では、接続 URI で directConnection=true を指定するとレプリカセットに接続できます。本番環境では、Docker 仮想ネットワークの外部から各 MongoDB インスタンスにアクセスできるようにクラスターを構成することを推奨します。
オプション1: DNS シードリスト形式
DNS シードリスト接続形式を使用するには、接続文字列に+srv 修飾子を含めます。
たとえば、server.example.com 上のレプリカセットに接続するには、次のコマンドを実行します。
mongosh "mongodb+srv://server.example.com/"
注意
+srv TLS の動作
+srv 接続文字列修飾子を使用すると、MongoDB は --tls 接続オプションを true に自動的に設定します。この動作を上書きするには、--tls を false に設定します。
オプション 2: 接続文字列におけるノードの指定
レプリカセット ノードを個別に接続文字列で指定できます。
たとえば、replA という名前の 3 ノードのレプリカセットに接続するには、次のコマンドを実行します。
mongosh "mongodb://mongodb0.example.com.local:27017,mongodb1.example.com.local:27017,mongodb2.example.com.local:27017/?replicaSet=replA"
注意
directConnection パラメーターは自動的に追加されます
接続文字列で個々のレプリカセット ノードを指定すると、次のいずれかが true である場合を除き、mongosh は directConnection=true パラメーターを自動的に追加します。
接続文字列に
replicaSetクエリパラメーターが存在する。接続文字列が
mongodb+srv://接続文字列フォーマットを使用している。接続文字列に複数のホストを含むシードリストが含まれている。
接続文字列に
directConnectionパラメーターが既に含まれている。
directConnection=true の場合、接続 URI で指定されたホストはすべての操作を実行し、mongosh は明示的に設定された設定を含むすべての読み込み設定(read preference)を無視します。
TLS を使用した接続
TLS を使用して配置に接続するには、次のいずれかの方法を選択できます。
DNS シードリスト接続形式を使用します。
+srv接続文字列修飾子が、接続用オプションのtlsを自動的にtrueに設定します。たとえば、
tlsが有効になっている DNS シードリストを定義済みのレプリカセットに接続するには、次のコマンドを実行します。mongosh "mongodb+srv://server.example.com/" 接続文字列で
--tlsオプションをtrueに設定します。たとえば、接続文字列オプションで
tlsを有効にするには、次のコマンドを実行します。mongosh "mongodb://mongodb0.example.com:28015/?tls=true" --tlsコマンドライン オプションを指定します。たとえば、
tlsが有効になっているリモート ホストに接続するには、次のコマンドを実行します。mongosh "mongodb://mongodb0.example.com:28015" --tls
特定のデータベースへの接続
特定のデフォルト データベースに接続するには、接続文字列の URI パスでデータベースを指定します。接続文字列で指定されていない場合、test データベースがデフォルトになります。
たとえば、localhost 上のデータベース「qa」に接続するには、次のコマンドを実行します。
mongosh "mongodb://localhost:27017/qa"
authSource 接続オプションを使用して、接続文字列で認証データベースを指定できます。指定された場合、クライアントはこのデータベースを使用してユーザーの身元と認証情報を確認します。authSource が指定されていない場合、接続文字列で指定されたデフォルトのデータベースがデフォルトに設定されます。authSource とデフォルトのデータベースのいずれも指定されていない場合、authSource が admin データベースのデフォルトになります。
次の接続文字列によりデフォルトのデータベースは myDefaultDB に、認証データベースは admin に設定されます。
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com:27017/myDefaultDB?authSource=admin
プロキシ設定
プロキシ構成との接続を確立するには、次の環境変数を使用できます。
変数 | 説明 | 例 | |
|---|---|---|---|
| データベース クラスターなど、 | 次の例では、TLS が有効になっている | |
|
| 次の例えでは | |
|
| 次の例では、TLS を使用せずに | |
| 指定された URL へのすべての接続をプロキシします。 | 次の例では、URL に認証情報が含まれる | |
| プロキシから除外するホスト名のコンマ区切りリスト。 | 次の例では、 |
注意
mongosh は、次のプロキシ タイプをサポートします。
Socks 5プロキシ
HTTP プロキシ
CONNECT プロキシ
以前にリストされたプロキシのいずれかに解決されるPAC URL
別の配置への接続
MongoDB Shell の配置にすでに接続している場合は、Mongo() または connect() メソッドを使用して、MongoDB Shell 内から別の配置に接続できます。
これらのメソッドを使用して別の配置に接続する方法については、「新しい接続の開き方」を参照してください。
現在の接続の検証
現在のデータベース接続を確認するには、db.getMongo() メソッドを使用します。
このメソッドでは、現在の接続の接続文字列 URIが返されます。
配置からの切断
配置から切断して mongosh を終了するには、次のいずれかのアクションを実行します。
.exit、exit、またはexit()と入力します。quitまたはquit()と入力します。Ctrl+Dを押します。Ctrl+Cを 2 回押します。
非正規の配置
非正規の MongoDB インスタンスに接続すると、shell に警告メッセージが表示されます。非正規品のインスタンスは、機能が不足していたり、整合性や完全性に不備があったりするため、正規の MongoDB インスタンスと動作が異なる場合があります。
制限
Kerberos 認証では、
authMechanismProperties=CANONICALIZE_HOST_NAME:true|falseを接続文字列で使用できません。代わりに、次のいずれかを使用します。authMechanismProperties=CANONICALIZE_HOST_NAME:forwardauthMechanismProperties=CANONICALIZE_HOST_NAME:forwardAndReverseauthMechanismProperties=CANONICALIZE_HOST_NAME:none
mongoshは、現在、zlibコンプレッサーのみをサポートしています。次のコンプレッサーはサポートされていません。zstdsnappy
mongosh2.0.0 以降で起動する場合接続文字列内のブール値には次の条件があります。
trueまたはfalseを使用する必要があります。trueの代わりに、1、y、yes、またはtを使用できません。falseの代わりに、-1、0、n、no、またはfを使用できません。