对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。
Docs 菜单

选项

使用以下选项从不同方面查看和操控您的 MongoDB Shell 。

--build-info

返回 JSON 格式的文档,其中包含有关 mongosh 版本和驱动程序依赖项的信息。

示例:查看构建信息

您可以通过在终端运行以下命令来检查 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 控制台。

有关更多详细信息和示例,请参阅从命令行执行脚本。

--help, -h

返回有关 MongoDB Shell 的选项和使用的信息。

--nodb

阻止 Shell 连接到任何数据库实例。

--no-quiet

禁用非交互式 shell 会话的默认--quiet 选项模式。当指定时,mongosh 在启动期间显示所有消息。

--norc

阻止 shell 在启动时获取和评估~/.mongoshrc.js

--quiet

跳过启动过程中的所有消息(例如欢迎信息和启动警告),直接跳转到提示符。

对于非交互式 shell 会话,MongoDB 默认启用--quiet。您可以使用 --no-quiet 禁用此行为。

--skipStartupWarnings

防止 mongosh 在创建会话时显示服务器初创企业警告。要抑制所有初创企业消息,请使用 --quiet 选项。

--shell

启用 shell 接口。如果调用 mongosh 命令并指定 JavaScript 文件作为参数,或者在命令行中使用 --eval 指定 JavaScript,--shell 选项会在文件完成执行后为用户提供 shell 提示符。--shell 标志与 --json 互斥。

--verbose

提高在连接过程中以及运行命令时 shell 输出信息的详细程度。

--version

返回 MongoDB Shell 版本号。

--apiVersion <version number>

指定 apiVersion"1" 是当前唯一支持的值。

--apiStrict

做出如下指定,即,如果应用程序使用 Stable API 以外的命令或行为,则服务器将使用 APIStrictError 进行响应。

如果指定 --apiStrict,则还必须指定 --apiVersion

--apiDeprecationErrors

如果应用程序使用的命令或行为在指定 apiVersion 中已弃用,则指定服务器将使用 APIDeprecationError 进行响应。

如果指定 --apiDeprecationErrors,则还必须指定 --apiVersion

--host <hostname>

指定运行 mongodmongos 的主机的名称。如果未指定,MongoDB Shell 会尝试连接到本地主机上运行的 MongoDB 进程。

要连接到副本集,

指定 replica set name 和副本集节点的种子列表。请使用以下形式:

<replSetName>/<hostname1><:port>,<hostname2><:port>,<...>
对于 TLS/SSL 连接 (

--tls

),
使用

MongoDB Shell

验证主机名(在

--host

选项或连接字符串)与 提供的证书中的 SAN(或者,如果 SAN 不存在,则匹配 CN)匹配

mongod

or

mongos

。如果 SAN 存在,则

MongoDB Shell

CN 不匹配。如果主机名与 SAN(或 CN)不匹配,则

MongoDB Shell

Shell无法连接。
对于 DNS 种子列表连接

将连接协议指定为mongodb+srv ,然后指定 DNS SRV 主机名记录和任何选项。authSourcereplicaSet 选项(如果包含在连接字符串中)将覆盖 TXT记录中设立的任何相应的 DNS 配置选项。使用mongodb+srv: tls=true连接字符串隐式启用客户端连接的 TLS(通常使用 设立)。可以通过在查询字符串中设置 来关闭 TLStls=false 选项。

例子

mongodb+srv://server.example.com/?connectionTimeoutMS=3000
--port <port>

指定 mongodmongos 实例正在监听的端口。如果 --port 未指定,MongoDB Shell 会尝试连接到端口 27017

--tls

启用与已启用mongod TLS支持的mongos 或 的连接。

要了解有关 TLS/SSL 和 MongoDB 的更多信息,请参阅:

--tlsCertificateKeyFile <filename>

指定包含 的.pem TLS 证书和密钥的mongosh 文件。使用相对或绝对路径指定.pem 文件的文件名。

使用 --tls 选项连接到需要客户端证书mongodmongos实例时,此选项是必需的。也就是说,MongoDB Shell 向服务器提供此证书。

注意

从版本 4.4 开始,如果提供的 x.509 证书在 mongod/mongos 主机系统时间的 30 天内过期,则 mongod / mongos 会在连接时记录警告。

要了解有关 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 实例提供的证书的验证检查,并允许连接到提供无效证书的服务器。

注意

从MongoDB4.0 开始,如果您在使用--tlsAllowInvalidCertificates x.509 身份验证时指定 ,则无效证书仅足以建立 TLS 连接,但不足以进行身份验证。

警告

尽管可以使用,但应尽量避免使用 --tlsAllowInvalidCertificates 选项。如果必须使用 --tlsAllowInvalidCertificates,则应当仅在不可能发生入侵的系统上使用该选项。

如果MongoDB Shell Shell (和其他MongoDB工具)使用 --tlsAllowInvalidCertificates选项运行,则Shell (和其他MongoDB工具)不会尝试验证服务器证书。这会对过期的 mongodmongos 证书以及冒充有效mongodmongos 实例的外部进程造成漏洞。如果只需禁用 TLS 证书中的主机名验证,请参阅--tlsAllowInvalidHostnames

要了解有关 TLS/SSL 和 MongoDB 的更多信息,请参阅:

--tlsCertificateSelector <parameter>=<value>

可在 Windows 和 macOS 上用作 --tlsCertificateKeyFile 的替代方案。

重要

Windows 与导入私钥

导入私钥时,必须将其标记为可导出。默认情况下,Windows 证书导入向导不会选中此选项。

Microsoft 证书导入向导,其中键标记为可导出

--tlsCertificateKeyFile--tlsCertificateSelector 选项是互斥的。您只能指定一个。

指定证书属性,以便从操作系统的证书存储中选择匹配的证书。

--tlsCertificateSelector 接受格式为 <property>=<value> 的参数,其中属性可以是以下之一:

属性
值类型
说明

subject

ASCII 字符串

证书上的主题名称或公用名

thumbprint

十六进制字符串

以十六进制表示的字节序列,用于通过 SHA-1 摘要识别公钥。

thumbprint 有时称为 fingerprint

在使用系统 SSL 证书存储区时,会用 OCSP(在线证书状态协议)来验证证书的吊销状态。

注意

从版本 4.4 开始,如果提供的 x.509 证书在 mongod/mongos 主机系统时间的 30 天内过期,则 mongod / mongos 会在连接时记录警告。

--tlsDisabledProtocols <string>

禁用指定的 TLS 协议。此选项可识别以下协议:

  • TLS1_0

  • TLS1_1

  • TLS1_2

  • (从版本 4.0.4 开始,3.6.9、3.4.24) TLS1_3

  • 在 macOS 上,您无法在禁用 TLS1_1 的情况下,让 TLS1_0TLS1_2 同时启用。您必须至少禁用后两者中的一个,比如 TLS1_0,TLS1_1

  • 若要列出多个协议,请指定为逗号分隔的协议列表,例如 TLS1_0,TLS1_1

  • 指定的禁用协议将覆盖任何默认禁用的协议。

从版本 4.0 开始,如果系统支持 TLS 1.1+,MongoDB 将禁用 TLS 1.0。要启用已禁用的 TLS 1.0,请将 none 指定为 --tlsDisabledProtocols.

--tlsUseSystemCA

允许 mongosh 加载操作系统证书颁发机构已提供的 TLS 证书,而无需向 shell 显式指定证书。您无法关闭此功能。--tlsUseSystemCA 仍然可以设置为向后兼容性,但没有效果。

注意

此标志应用于 MongoDB 连接和 OIDC 身份提供程序连接。

--authenticationDatabase <dbname>

指定已创建指定 --username 的身份验证数据库。请参阅身份验证数据库

如果没有为 --authenticationDatabase 指定值,MongoDB Shell 将使用连接字符串中指定的数据库。

--authenticationMechanism <name>

指定 MongoDB Shell 用来对 mongodmongos 进行身份验证的机制。如果不指定 authenticationMechanism 但提供用户凭证,MongoDB Shell 和驱动程序将尝试使用 SCRAM-SHA-256。如果失败,则会回退到 SCRAM-SHA-1。

说明

RFC 5802 使用 SHA-1 哈希函数的标准 Salted Challenge Response Authentication Mechanism

RFC 7677 使用 SHA-256 哈希函数的标准 Salted Challenge Response Authentication Mechanism

需将 featureCompatibilityVersion 设为 4.0

MongoDB TLS 证书身份验证。

GSSAPI (Kerberos)

使用 Kerberos 的外部身份验证。此机制仅在 MongoDB Enterprise 中可用。

普通版 (LDAP SASL)

使用LDAP进行外部身份验证。 您还可以使用 PLAIN 对数据库内用户进行身份验证。 PLAIN 以纯文本形式传输密码。 MongoDB Enterprise和MongoDB Atlas中提供了此机制。

MONGODB-OIDC (OpenID Connect)

使用 OpenID Connect 进行外部身份验证。 MongoDB Enterprise和MongoDB Atlas中提供了此机制。

MONGODB-AWS (Amazon Web Services IAM)

使用Amazon Web Services Identity and Access Management (Amazon Web Services 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如何与身份提供商交互以进行身份验证过程。mongosh支持以下 OpenID Connect 流程:

OpenID Connect 流程
说明

auth-code

默认。mongosh 打开浏览器,并将您重定向到身份提供商登录屏幕。

device-auth

mongosh 为您提供 URL 和代码以完成身份验证。这被视为安全性较低的 OpenID Connect 流程,但可以在无法打开浏览器的环境中运行 mongosh 时使用。

要将 device-auth 设置为 auth-code 后备选项,请参见以下示例:

mongosh 'mongodb://localhost/' --authenticationMechanism MONGODB-OIDC --oidcFlows=auth-code,device-auth
--oidcDumpTokens

指定 mongosh 是否打印带有额外调试信息的令牌。此选项仅用于调试目的。

--oidcDumpTokens 选项接受以下值:

说明

redacted

仅设置 --oidcDumpTokens 时的默认。打印标记调试信息,其中敏感数据经过编辑。

include-secrets

打印令牌调试信息,包括可能用于对数据库服务器进行身份验证的凭证。

重要

include-secrets 值会暴露攻击者可用于身份验证的凭证。仅当未经授权的人员无法查看 mongosh 的输出,且出于诊断目的需要凭证时,才使用此选项。

--oidcIdTokenAsAccessToken

指定 mongosh 是否使用从身份提供程序收到的 ID 令牌,而不是访问令牌。请将此选项与无法配置为提供 JWT 访问令牌的身份提供程序搭配使用。

--oidcNoNonce

默认下,mongoshOIDC 授权代码流程期间发送随机数参数。

如果设立了--oidcNoNonce 选项,则 mongosh 不会发送随机数参数。如果您的身份提供程序不支持将随机数值作为授权的一部分,请使用此选项。

--oidcRedirectUri

指定身份提供商在身份验证后将您重定向的 URI。URI 必须与身份提供商的配置匹配。默认为 http://localhost:27097/redirect

--oidcTrustedEndpoint

表示当前连接不是Atlas或 localhost 的受信任终结点。这可确保将访问权限令牌发送到服务器。仅在连接到您信任的服务器时使用此选项。

--browser

指定启用 MONGODB-OIDCmongosh 将您重定向到的浏览器。

此选项与系统 Shell 一起运行。

--no-browser 设置为 以完全禁止打开浏览器。

--password <password>, -p <password>

指定密码,用于对使用身份验证的 MongoDB 数据库进行身份验证。与 --username--authenticationDatabase 选项结合使用。

要强制 MongoDB Shell 提示输入密码,请输入 --password 选项作为最后一个选项,并省略参数。

--username <username>, -u <username>

指定用户名,用于对使用身份验证的 MongoDB 数据库进行身份验证。与 --password--authenticationDatabase 选项配合使用。

--retryWrites

启用可重试写入

默认情况下,可重试写入为:

  • 已启用 mongosh

  • 在旧版 mongo shell 中禁用

要禁用可重试写入功能,请使用 --retryWrites=false

有关会话的更多信息,请参阅客户端会话和因果一致性保证

--cryptSharedLibPath <string>

8.2版本新增。:

自动加密共享库的路径。该库必须是版本 8.2.0 或更高版本。对 mongosh shell 会话使用自动加密时必需的。

--awsAccessKeyId <string>

一个与具有Amazon Web Services KMS (KMS) ListRead 权限的 IAM 用户关联的Amazon Web Services访问密钥mongosh 使用指定的 --awsAccessKeyId 访问权限KMS。

需要 --awsAccessKeyId 来启用客户端字段级加密,以便进行 mongosh shell 会话。--awsAccessKeyId需要以下两个命令行选项:

如果省略 --awsAccessKeyId,则在 shell 会话中使用 Mongo() 构造函数启用客户端字段级加密。

为降低访问密钥泄漏到日志中的风险,可考虑将环境变量指定为 --awsAccessKeyId

--awsSecretAccessKey <string>

与指定 关联的Amazon Web Services密钥。--awsAccessKeyId

需要 --awsSecretAccessKey 来启用客户端字段级加密,以便进行 mongosh 会话。--awsSecretAccessKey 需要以下两个命令行选项:

如果省略 --awsSecretAccessKey 及其支持选项,请在 shell 会话中使用 Mongo() 启用客户端字段级加密。

为降低访问密钥泄漏到日志中的风险,可考虑将环境变量指定为 --awsSecretAccessKey

--awsSessionToken <string>

与指定的. --awsAccessKeyId关联的 Amazon Web Services会话令牌 。

需要 --awsSessionToken 来启用客户端字段级加密,用于 mongosh shell 会话。--awsSessionToken 需要以下所有命令行选项:

如果省略 --awsSessionToken 及其支持选项,请在 shell 会话中使用 Mongo() 启用客户端字段级加密。

为降低访问密钥泄漏到日志中的风险,可考虑将环境变量指定为 --awsSessionToken

--keyVaultNamespace <string>

集合的完整命名空间 (<database>.<collection>) 用作客户端字段级加密的密钥库。需要 --keyVaultNamespace 启用 mongosh shell 会话的客户端字段级加密。如果指定的命名空间不存在,则 mongosh 创建该命名空间。

--keyVaultNamespace 需要以下两个命令行选项:

如果省略 --keyVaultNamespace 及其支持选项,请在 shell 会话中使用 Mongo() 构造函数来启用客户端字段级加密。