オプション
MongoDB Shell のさまざまな側面を表示、制御するには、次のオプションを使用します。
一般オプション
--build-info
mongosh
ビルドとドライバーの依存関係に関する情報を含む JSON 形式のドキュメントを返します。例: ビルド情報の表示
ターミナルから次のコマンドを実行すると、
mongosh
バイナリのビルド情報とドライバーの依存関係を確認できます。mongosh --build-info このコマンドは、次の JSON 形式のドキュメントを返します。
{ version: '1.10.1', distributionKind: 'packaged', buildArch: 'x64', buildPlatform: 'linux', buildTarget: 'unknown', buildTime: '2023-06-21T09:49:37.225Z', gitVersion: '05ad91b4dd40382a13f27abe1ae8c3f9f52a38f7', nodeVersion: 'v16.20.1', opensslVersion: '3.1.1', sharedOpenssl: true, runtimeArch: 'x64', runtimePlatform: 'darwin', deps: { nodeDriverVersion: '5.6.0' } }
--eval <javascript>
JavaScript の式を評価します。単一の
--eval
引数を使用することも、複数の--eval
引数を一緒に使用することもできます。mongosh
は--eval
引数を評価した後、その結果をコマンドラインに出力します。複数の--eval
ステートメントを使用する場合、mongosh
は最後の--eval
の結果のみを出力します。--json
フラグを--eval
と共に使用すると、拡張 JSON形式でmongosh
の結果を返すことができます。mongosh
は--json=canonical
モードと--json=relaxed
モードの両方をサポートします。モードを省略すると、mongosh
はデフォルトでcanonical
モードになります。--json
フラグは、--shell
と相互に排他的です。例: 出力の形式設定
自動解析に適した出力を得るには、
EJSON.stringify()
を使用します。mongosh --quiet --host rs0/centos1104 --port 27500 \ --eval "EJSON.stringify(rs.status().members.map( \ m => ({'id':m._id, 'name':m.name, 'stateStr':m.stateStr})));" \ | jq jq
で解析すると、出力は次のようになります。[ { "id": 0, "name": "centos1104:27500", "stateStr": "PRIMARY" }, { "id": 1, "name": "centos1104:27502", "stateStr": "SECONDARY" }, { "id": 2, "name": "centos1104:27503", "stateStr": "SECONDARY" } ] 注意
EJSON
には形式オプションが組み込まれているため、jq
のようなパーサーが不要になる場合があります。たとえば、以下のコードは、上記と同じ形式の出力を生成します。mongosh --quiet --host rs0/centos1104 --port 27500 \ --eval "EJSON.stringify( rs.status().members.map( \ ({ _id, name, stateStr }) => ({ _id, name, stateStr })), null, 2);" 例: 複数の --eval 引数
moviesDatabase
内のコレクションのリストを取得するには、複数の--eval
ステートメントを使用します。mongosh --quiet \ --eval 'use moviesDatabase' \ --eval 'show collections' \ mongodb://localhost/ 例: --json オプション
複数の
--eval
ステートメントを使用して、コレクションに関する統計を拡張 JSON 形式で返すには、次のようにします。mongosh --quiet --json=relaxed \ --eval 'use <database-name>' \ --eval 'db.<collection>.stats()' \ mongodb://localhost/
--file, -f <javascript>
MongoDB Shell コンソールに入らずに、コマンド ラインからスクリプトを実行します。
詳細と例については、「コマンドラインからのスクリプトの実行」を参照してください。
Stable API オプション
--apiVersion <version number>
apiVersion を指定します。現在サポートされている値は
"1"
のみです。
--apiStrict
アプリケーションが Stable API の外部のコマンドまたは動作を使用する場合、サーバーが APIStrictError で応答することを指定します。
--apiStrict
を指定する場合は、--apiVersion
も指定する必要があります。
--apiDeprecationErrors
指定された
apiVersion
で非推奨のコマンドまたは動作をアプリケーションが使用する場合、サーバーが APIDeprecationError で応答することを指定します。--apiDeprecationErrors
を指定する場合は、--apiVersion
も指定する必要があります。
接続オプション
--host <hostname>
mongod
またはmongos
が実行中のホスト マシンの名前を指定します。これが指定されていない場合、MongoDB Shell は localhost で実行中の MongoDB プロセスへの接続を試みます。- レプリカセットに接続するには、
replica set name
とセット ノードのシードリストを指定します。次のフォームを使用します。<replSetName>/<hostname1><:port>,<hostname2><:port>,<...> - TLS/SSL接続(
--tls
)の場合 - MongoDB Shellは、ホスト名(
--host
オプションまたは接続stringで指定)が、mongod
によって提示された証明書のSAN
(SAN
が存在しない場合はCN
)と一致することを確認します。またはmongos
。SAN
が存在する場合、MongoDB Shell はCN
と一致しません。 ホスト名がSAN
(またはCN
)と一致しない場合、 MongoDB Shell shell接続に失敗します。
- DNS シードリスト接続の場合
接続プロトコルを
mongodb+srv
として指定し、DNS SRV ホスト名のレコードとオプションを指定します。authSource
およびreplicaSet
オプションが接続文字列に含まれている場合、TXT レコードに設定されている対応する DNS 構成オプションが無視されます。mongodb+srv:
接続文字列を使用すると、クライアント接続に対して TLS / SSL(通常はtls=true
で設定)が暗黙的に有効になります。クエリ文字列にtls=false
を設定すると、TLS オプションをオフにすることができます。例
mongodb+srv://server.example.com/?connectionTimeoutMS=3000
--port <port>
mongod
またはmongos
インスタンスがリッスンしているポートを指定します。--port
が指定されていない場合、MongoDB Shell はポート27017
への接続を試みます。
TLS のオプション
--tlsCertificateKeyFile <filename>
mongosh
の TLS / SSL 証明書と鍵の両方を含む.pem
ファイルを指定します。相対パスまたは絶対パスを使用して、.pem
ファイルのファイル名を指定します。このオプションは、
--tls
オプションを使用して、クライアント証明書を必要とするmongod
またはmongos
インスタンスに接続する場合に必要です。つまり、MongoDB Shell はこの証明書をサーバーに提示します。注意
TLS/SSL と MongoDB の詳細については、以下を参照してください。
--tlsCertificateKeyFilePassword <value>
証明書鍵ファイルの複合化用パスワード(
--tlsCertificateKeyFile
)を指定します。証明書鍵ファイルが暗号化されている場合にのみ、
--tlsCertificateKeyFilePassword
オプションを使用します。いずれの場合も、MongoDB Shell は、すべてのログ記録とレポート出力からパスワードを削除します。PEM ファイル内の秘密キーが暗号化されており、
--tlsCertificateKeyFilePassword
オプションを指定しない場合は、MongoDB Shell はパスフレーズの入力を要求します。「TLS/SSL 証明書のパスフレーズ」を参照してください。
TLS/SSL と MongoDB の詳細については、以下を参照してください。
--tlsCAFile <filename>
認証局からのルート証明書チェーンを含む
.pem
ファイルを指定します。このファイルは、mongod
やmongos
インスタンスによって提示された証明書を検証するために使用されます。相対パスまたは絶対パスを使用して、
.pem
ファイルのファイル名を指定します。TLS/SSL と MongoDB の詳細については、以下を参照してください。
--tlsCRLFile <filename>
証明書失効リストを含む
.pem
ファイルを指定します。相対パスまたは絶対パスを使用して.pem
ファイルのファイル名を指定します。TLS/SSL と MongoDB の詳細については、以下を参照してください。
--tlsAllowInvalidHostnames
mongod
やmongos
インスタンスによって提示される証明書内のホスト名の検証を無効にします。MongoDB Shell は、サーバー証明書のホスト名がサーバーのホストと一致しない場合でも、MongoDB インスタンスに接続できます。TLS/SSL と MongoDB の詳細については、以下を参照してください。
--tlsAllowInvalidCertificates
バージョン 4.2の新機能
mongod
やmongos
インスタンスによって提示された証明書の検証チェックをバイパスし、無効な証明書を提示するサーバーへ接続できるようにします。注意
MongoDB 4.0 以降、x.509 認証を使用する時に
--tlsAllowInvalidCertificates
を指定する場合、無効な証明書は TLS / SSL 接続を確立するには十分ですが、認証には不十分です。警告
--tlsAllowInvalidCertificates
オプションは使用可能ですが、可能な限り使用しないでください。--tlsAllowInvalidCertificates
の使用が必要な場合は、侵入が不可能なシステムでのみこのオプションを使用してください。MongoDB Shell(およびその他の MongoDB ツール)が
--tlsAllowInvalidCertificates
オプションで実行される場合、shell(およびその他の MongoDB ツール)はサーバー証明書の検証を試行しません。これにより、期限切れのmongod
とmongos
の証明書、および有効なmongod
またはmongos
インスタンスを装った外部プロセスに対する脆弱性が生じます。TLS/SSL証明書のホスト名の検証のみを無効にする必要がある場合は、--tlsAllowInvalidHostnames
を参照してください。TLS/SSL と MongoDB の詳細については、以下を参照してください。
--tlsCertificateSelector <parameter>=<value>
--tlsCertificateKeyFile
の代替として、Windows および macOS で利用可能です。重要
Windows と秘密キーのインポート
秘密キーをインポートするときは、エクスポート可能なものとしてマークする必要があります。Windows の証明書インポート ウィザードは、デフォルトではこのオプションをチェックしません。
--tlsCertificateKeyFile
オプションと--tlsCertificateSelector
オプションは相互に排他的です。 指定できるのは 1 つだけです。オペレーティング システムの証明書ストアから一致する証明書を選択するために、証明書プロパティを指定します。
--tlsCertificateSelector
では、<property>=<value>
形式の引数が受け入れられます。プロパティは次のいずれか 1 つになります。プロパティ値の型説明subject
ASCII 文字列
証明書のサブジェクト名またはコモンネーム
thumbprint
hex 文字列
SHA-1 ダイジェストによって公開キーを識別するために使用される、16進数で表現されるバイト シーケンス。
thumbprint
は、fingerprint
と呼ばれることもあります。システムの SSL 証明書ストアを使用する場合、 OCSP(オンライン証明書ステータス プロトコル)を使用して証明書の失効状態を検証します。
--tlsDisabledProtocols <string>
指定した TLS プロトコルを無効にします。このオプションは、次のプロトコルを認識します。
TLS1_0
TLS1_1
TLS1_2
(バージョン 4.0.4 以降、3.6.9、3.4.24)
TLS1_3
macOS では、
TLS1_1
を無効にして、TLS1_0
とTLS1_2
の両方を有効のままにすることはできません。また、他の 2 つのうち少なくとも 1 つを無効にする必要があります(例:TLS1_0,TLS1_1
)。複数のプロトコルを指定するには、プロトコルをカンマで区切ったリストとして指定します(例:
TLS1_0,TLS1_1
)。指定の無効なプロトコルは、デフォルトの無効なプロトコルを上書きします。
バージョン 4.0 以降、MongoDB は、システムで TLS 1.1+ が利用可能な場合、TLS 1.0 の使用を無効にします。無効になっている TLS 1.0 を有効にするには、
--tlsDisabledProtocols
にnone
を指定します。
認証オプション
--authenticationDatabase <dbname>
指定された
--username
が作成された認証データベースを指定します。詳細については、「認証データベース」を参照してください。--authenticationDatabase
の値を指定しない場合、MongoDB Shellは接続文字列で指定されたデータベースを使用します。
--authenticationMechanism <name>
MongoDB Shell が
mongod
またはmongos
への認証に使用する認証メカニズムを指定します。authenticationMechanism
を指定せずにユーザー認証情報を提供すると、MongoDB Shell とドライバーは SCRAM-SHA-256 を使用しようとします。これが失敗した場合は、SCRAM-SHA-1 に戻ります。値説明SHA-1 ハッシュ関数を使用する RFC5802 標準の Salted Challenge Response Authentication Mechanismです。
SHA-256 ハッシュ関数を使用する RFC 7677 標準の Salted Challenge Response Authentication Mechanism。
featureCompatibilityVersion を
4.0
に設定する必要があります。MongoDB TLS/SSL 証明書認証。
GSSAPI(Kerberos)
Kerberos を使用する外部認証。このメカニズムは MongoDB Enterprise でのみ使用できます。
PLAIN(LDAP SASL)
LDAP を使用する外部認証。データベース内のユーザー認証には、
PLAIN
を使用することもできます。PLAIN
はパスワードをプレーン テキストで送信します。このメカニズムはMongoDB EnterpriseおよびMongoDB Atlasで使用できます。MONGODB-OIDC(OpenID Connect)
OpenID Connect を使用した外部認証。このメカニズムはMongoDB EnterpriseおよびMongoDB Atlasで使用できます。
MONGODB-AWS
(AWS IAM)Amazon Web Services Identity and Access Management(AWS IAM)認証情報を使用した外部認証。このメカニズムはMongoDB EnterpriseおよびMongoDB Atlasで使用できます。
--gssapiServiceName
GSSAPI/Kerberos を使用してサービスの名前を指定します。サービスがデフォルト名
mongodb
を使用しない場合のみ必要となります。このオプションは MongoDB Enterprise でのみ使用できます。
--sspiHostnameCanonicalization <string>
ホスト名の正規化を使用するかどうかを指定します。
--sspiHostnameCanonicalization
は、接続文字列のauthMechanismProperties
部分にCANONICALIZE_HOST_NAME:true|false
キーペアを設定するのと同じ効果があります。--sspiHostnameCanonicalization
が設定されている場合、次のようになります。forwardAndReverse
は、DNS フォワードルックアップを実行してから、リバースルックアップを実行します。mongosh
1.3.0 の新機能。forward
の効果はauthMechanismProperties=CANONICALIZE_HOST_NAME:true
を設定するのと同じです。none
の効果はauthMechanismProperties=CANONICALIZE_HOST_NAME:false
を設定するのと同じです。
--oidcFlows
OpenID Connect フローをカンマ区切りのリストで指定します。OpenID Connect フローは、認証プロセスのために
mongosh
が ID プロバイダーとどのように連携するかを指定します。mongosh
は次の OpenID Connect フローをサポートしています。OpenID Connect フロー説明auth-code
デフォルト。
mongosh
はブラウザを開き、IdP のログイン画面にリダイレクトします。device-auth
mongosh
は、認証を完了するための URL とコードを提供します。これは、安全性の低い OpenID Connect フローであると考えられますが、ブラウザを開くことができない環境でmongosh
を実行する場合に使用できます。device-auth
をauth-code
の予備オプションとして設定するには、次の例を参照してください。mongosh 'mongodb://localhost/' --authenticationMechanism MONGODB-OIDC --oidcFlows=auth-code,device-auth
--oidcIdTokenAsAccessToken
mongosh
がアクセス トークンの代わりにIdPから受信したIDトークンを使用するかどうかを指定します。 JWT アクセス トークンを提供するように構成できない ID プロバイダーでこのオプションを使用します。
--oidcRedirectUri
認証後に IdP がリダイレクトする URI を指定します。URI は IdP の構成と一致する必要があります。デフォルトは
http://localhost:27097/redirect
です。
--oidcTrustedEndpoint
Atlas または localhost 以外の信頼できるエンドポイントへの接続を指定します。このオプションは、信頼できるサーバーに接続する場合にのみ使用してください。
--password <password>, -p <password>
認証を使用する MongoDB データベースに対して認証するためのパスワードを指定します。
--username
オプションおよび--authenticationDatabase
オプションと組み合わせて使用します。MongoDB Shell でパスワードの入力を求めるように強制するには、最後のオプションとして
--password
オプションを入力し、引数を省略します。
--username <username>, -u <username>
認証を使用する MongoDB データベースへの認証すに使用するユーザー名を指定します。
--password
オプションおよび--authenticationDatabase
オプションと組み合わせて使用します。
セッション オプション
--retryWrites
再試行可能な書込みを有効にします。
デフォルトでは、再試行可能な書込みは次のとおりです。
で有効
mongosh
レガシー
mongo
shell では無効
再試行可能な書込みを無効にするには、
--retryWrites=false
を使用します。セッションの詳細については、「クライアント セッションと因果整合性の保証」を参照してください。
クライアント側のフィールドレベル暗号化オプション
--awsAccessKeyId <string>
AWS アクセス キーは、AWS KMS(Key Management Service)に対する
List
権限とRead
権限を持つ IAM ユーザーに関連付けられています。mongosh
は、指定された--awsAccessKeyId
を使用して KMS にアクセスします。mongosh
shell セッションでクライアント側のフィールドレベル暗号化を有効にするには、--awsAccessKeyId
が必要です。--awsAccessKeyId
には、次のコマンドライン オプションが両方とも必要です。--awsAccessKeyId
が省略されている場合は、shell セッション内でMongo()
コンストラクターを使用して、クライアント側のフィールドレベル暗号化を有効にします。アクセス キーがログに漏洩するリスクを軽減するには、環境変数を
--awsAccessKeyId
に指定することを検討してください。
--awsSecretAccessKey <string>
指定された
--awsAccessKeyId
に関連付けられた AWS 秘密キーです。mongosh
セッションでクライアント側のフィールドレベル暗号化を有効にするには、--awsSecretAccessKey
が必要です。--awsSecretAccessKey
には、次のコマンドライン オプションが両方とも必要です。--awsSecretAccessKey
とそのサポート オプションが省略されている場合は、shell セッション内でMongo()
を使用して、クライアント側のフィールドレベルの暗号化を有効にします。アクセス キーがログに漏洩するリスクを軽減するには、環境変数を
--awsSecretAccessKey
に指定することを検討してください。
--awsSessionToken <string>
指定された
--awsAccessKeyId
に関連付けられた AWSセッション トークンです。mongosh
shell セッションでクライアント側のフィールドレベル暗号化を有効にするには、--awsSessionToken
が必要です。--awsSessionToken
には、次のコマンドライン オプションがすべて必要です。--awsSessionToken
とそのサポート オプションが省略されている場合は、shell セッション内でMongo()
を使用して、クライアント側のフィールドレベルの暗号化を有効にします。アクセス キーがログに漏洩するリスクを軽減するには、環境変数を
--awsSessionToken
に指定することを検討してください。
--keyVaultNamespace <string>
クライアント側のフィールドレベル暗号化のキーヴォールトとして使用されるコレクションの完全な名前空間(
<database>.<collection>
)。 {--keyVaultNamespace
mongosh
shell セッションでクライアント側のフィールドレベル暗号化を有効にするには、 が必要です。mongosh
は、指定された名前空間が存在しない場合は、その名前空間を作成します。--keyVaultNamespace
には、次のコマンドライン オプションが両方とも必要です。--keyVaultNamespace
とそのサポート オプションが省略されている場合は、shell セッション内でMongo()
コンストラクターを使用して、クライアント側のフィールドレベル暗号化を有効にします。