Docs 主页 → 开发应用程序 → MongoDB Manual
旧版 mongo
Shell
注意
MongoDB v 5中已弃用mongo
Shell。 0 。替换项是 mongosh
。
较旧的mongo
Shell 文档包含在该MongoDB
版本的相应文档中。
先前版本的快速链接
有关更多信息,请参阅mongo
Shell 和mongosh
的比较。
说明
mongo
是 MongoDB 的交互式 JavaScript Shell 接口,它为系统管理员提供了功能强大的接口,并为开发人员提供了直接使用数据库测试查询和操作的方法。 mongo
还提供了一个功能齐全的 JavaScript 环境,可与 MongoDB 一起使用。
mongo
Shell 作为MongoDB 服务器安装的一部分包含在内。如果您已经安装了服务器,则会将mongo
Shell 安装到与服务器二进制文件相同的位置。
或者,如果您想从 MongoDB Server 单独下载mongo
Shell,则可以按照以下步骤将该 Shell 作为独立的软件包安装:
访问您所用 MongoDB 版本的下载中心:
从下拉菜单中选择您首选的 Version和Platform 。
根据您的平台选择要下载的Package :
将
mongo
Shell 从存档复制到文件系统上的某个位置。
有关特定于您的平台的其他安装指南,或要将mongo
Shell 作为 MongoDB Server 安装的一部分进行安装,请参阅适用于您的平台的安装指南。
语法
您可以使用默认设置运行不带任何命令行选项的
mongo
Shell:mongo 您可以使用指定主机和端口以及其他连接选项的 连接字符串
mongo
运行 Shell。例如,以下内容包括tls
:mongo "mongodb://mongodb0.example.com:27017/testdb?tls=true" tls
选项从 MongoDB 4开始可用。 2 。在早期版本中,使用ssl
选项。要将
mongo
Shell 连接到副本集,您可以在连接字符串中指定副本集成员和名称:mongo "mongodb://mongodb0.example.com.local:27017,mongodb1.example.com.local:27017,mongodb2.example.com.local:27017/?replicaSet=replA" 有关连接字符串选项的更多信息,请参阅连接字符串。
您可以使用各种命令行选项运行
mongo
Shell。例如:mongo --host mongodb0.example.com:27017 [additional options] mongo --host mongodb0.example.com --port 27017 [additional options] 有关可用选项的更多信息,请参阅选项。
选项
在版本4中进行了更改。 2 :
MongoDB 弃用 SSL 选项,新增相应的 TLS 选项。
核心选项
--shell
启用 Shell 接口。如果您调用
mongo
命令并指定 JavaScript 文件作为参数,或使用--eval
在命令行上指定 JavaScript,则--shell
选项会在文件执行完成后向用户提供 Shell 提示。
--nodb
阻止 Shell 连接到任何数据库实例。稍后,要在 Shell 中连接到数据库,请参阅“打开新连接”。
--host <hostname>
指定运行
mongod
或mongos
的主机的名称。如果未指定,mongo
会尝试连接到本地主机上运行的 MongoDB 进程。- 要连接到副本集,
指定
replica set name
和集成员的种子列表。使用以下形式:<replSetName>/<hostname1><:port>,<hostname2><:port>,<...> - 对于 TLS/SSL 连接 (
--ssl
), mongosh
验证主机名(在CN
--host
选项或连接字符串中指定)是否与SAN
mongod
SAN
mongos
。如果SAN
存在,则mongosh
与CN
不匹配。如果主机名与SAN
(或CN
)不匹配,mongosh
将无法连接 MongoDB 4 。 2 ,在执行 SAN 比较时,MongoDB 支持比较 DNS 名称或 IP 地址。在以前的版本中,MongoDB 仅支持 DNS 名称的比较。- 对于DNS 种子列表连接,
将连接协议指定为
mongodb+srv
,然后是 DNS SRV 主机名记录和任何选项。authSource
和replicaSet
选项(如果包含在连接字符串中)将覆盖 TXT 记录中设置的任何相应的 DNS 配置选项。使用mongodb+srv:
连接字符串隐式启用客户端连接的 TLS/SSL(通常使用ssl=true
设置)。可以通过在查询字符串中设置ssl=false
来关闭 TLS/SSL 选项。示例:
mongodb+srv://server.example.com/?connectionTimeout=3000ms 版本 3.6 中的新增功能。
--eval <javascript>
对指定为参数的 JavaScript 表达式求值。
mongo
在评估代码时不会加载自己的环境。因此,Shell 环境的许多选项不可用。
--username <username>, -u <username>
指定用户名,用于对使用身份验证的 MongoDB 数据库进行身份验证。与
--password
和--authenticationDatabase
选项结合使用。如果使用 连接到 MongoDB Atlas 集群,请在此字段或
MONGODB-AWS
authentication mechanism
连接字符串 中指定您的 AWS 访问密钥 ID。或者,该值也可以作为环境变量AWS_ACCESS_KEY_ID
提供。请参阅 使用 AWS IAM 档案连接到 MongoDB Atlas 集群。
--password <password>, -p <password>
指定密码,用于对使用身份验证的 MongoDB 数据库进行身份验证。与
--username
和--authenticationDatabase
选项结合使用。要强制mongo
提示输入密码,请输入--password
选项作为最后一个选项,并省略参数。如果使用 连接到 MongoDB Atlas 集群,请在此字段或
MONGODB-AWS
authentication mechanism
连接字符串 中指定您的 AWS 访问秘密密钥。或者,该值也可以作为环境变量AWS_SECRET_ACCESS_KEY
提供。请参阅 使用 AWS IAM 档案连接到 MongoDB Atlas 集群。
--apiVersion <version number>
版本 5.0 中的新增功能。
指定apiVersion 。
"1"
是目前唯一支持的值。
--apiStrict
版本 5.0 中的新增功能。
指定如果应用程序使用 Stable API 之外的命令或行为,服务器将使用 APIStrictError 进行响应。
如果指定
--apiStrict
,则还必须指定--apiVersion
。
--apiDeprecationErrors
版本 5.0 中的新增功能。
指定如果应用程序使用的命令或行为在指定 apiVersion 中已弃用,服务器将使用APIDeprecationError进行响应。
如果指定
--apiDeprecationErrors
,则还必须指定--apiVersion
。
--awsIamSessionToken <aws session token>
如果使用 连接到 MongoDB Atlas 集群,并且除了
MONGODB-AWS
authentication mechanism
AWS 访问密钥 ID 和秘密访问密钥之外,还使用会话令牌,请在此字段或 连接字符串 中指定您的 AWS 会话令牌。或者,该值也可以作为环境变量AWS_SESSION_TOKEN
提供。请参阅 使用 AWS IAM 档案连接到 MongoDB Atlas 集群。仅在使用
MONGODB-AWS
authentication mechanism
时有效。
--help, -h
返回有关
mongo
的选项和使用的信息。
--version
返回
mongo
版本号。
--networkMessageCompressors <string>
版本 3.4 中的新增功能。
为此
mongo
Shell 与以下对象之间的通信启用网络压缩:您可以指定以下压缩程序:
重要
当双方都启用网络压缩时,消息就会被压缩。否则,各方之间的消息不会被压缩。
如果指定多个压缩程序,则列出压缩程序的顺序以及通信发起者都很重要。例如,如果
mongosh
指定以下网络压缩程序zlib,snappy
且mongod
指定snappy,zlib
,则mongosh
和mongod
之间的消息使用zlib
。如果各方未共享至少一个通用压缩程序,则各方之间的消息将不会被压缩。例如,如果
mongosh
指定网络压缩程序zlib
且mongod
指定snappy
,则mongosh
和mongod
之间的消息不会被压缩。
--ipv6
启用 IPv 6支持。默认情况下,
mongo
禁用 IPv 6 。要通过 IPv 连接到 MongoDB6 集群,您必须在启动
--ipv6
--host <mongod/mongos IPv6 address>
mongo
Shell 时同时指定 和 。默认情况下,
mongod
和mongos
禁用 IPv 6支持。在连接到 时指定--ipv6
mongod/mongos
不会启用对mongod/mongos
的 IPv 6支持。有关在mongod/mongos
上启用 IPv 6支持的文档,请参阅net.ipv6
。
<db name>
指定要连接的数据库的名称。例如:
mongo admin 上述命令会将
mongo
Shell 连接到本地计算机上运行的 MongoDB 部署的管理员数据库。您可以使用可解析的主机名或 IP 地址指定远程数据库实例。使用/
字符将数据库名称与主机名分隔开。请参阅以下示例:mongo mongodb1.example.net/test mongo mongodb1/admin mongo 10.8.8.10/test 此语法是连接到特定数据库的唯一方法。
--disableJavaScriptProtection
允许将javascript和javascriptWithScope(*已弃用*)类型的字段自动编组为
mongo
Shell 中的 JavaScript 函数。设置
--disableJavaScriptProtection
标志后,可以立即执行文档中包含的 JavaScript 函数。以下示例演示了 Shell 中的此行为:> db.test.insertOne( { _id: 1, jsFunc: function(){ print( "hello" ) } } ) WriteResult({ "nInserted" : 1 }) > var doc = db.test.findOne( { _id: 1 } ) > doc { "_id" : 1, "jsFunc" : function (){ print ( "hello" ) } } > typeof doc.jsFunc function > doc.jsFunc() hello 默认行为(当
mongo
启动时不带--disableJavaScriptProtection
标志时)是将嵌入式 JavaScript 函数转换为不可执行的 MongoDB Shell 类型Code
。以下示例演示了 Shell 中的默认行为:> db.test.insertOne( { _id: 1, jsFunc: function(){ print("hello") } } ) WriteResult({ "nInserted" : 1 }) > var doc = db.test.findOne( { _id: 1 } ) > doc { "_id" : 1, "jsFunc" : { "code" : "function (){print(\"hello\")}" } } > typeof doc.jsFunc object > doc.jsFunc instanceof Code true > doc.jsFunc() uncaught exception: TypeError: doc.jsFunc is not a function : @(shell):1:1
<file.js>
指定要运行然后退出的 JavaScript 文件。一般来说,这应该是最后指定的选项。
注意
Optional
要指定要执行的 JavaScript 文件并允许
mongo
使用--password
提示输入密码,请将文件名作为第一个参数传递,并将--username
和--password
作为最后一个选项,如下所示:mongo file.js --username username --password 使用
--shell
选项可在文件完成运行后返回到 shell。
身份验证选项
--authenticationDatabase <dbname>
指定已在其中创建指定
--username
的身份验证数据库。请参阅身份验证数据库。如果没有为
--authenticationDatabase
指定值,mongo
将使用连接字符串中指定的数据库。如果使用GSSAPI (Kerberos)、 PLAIN (LDAP SASL) 或
MONGODB-AWS
authentication mechanisms
,则必须将--authenticationDatabase
设置为$external
。
--authenticationMechanism <name>
默认值:SCRAM-SHA-1
指定
mongo
实例用于向mongod
或mongos
进行身份验证的身份验证机制。在版本4中进行了更改。 4 :使用 MongoDB 4 。 4 ,
mongo
Shell 添加了在连接到MongoDB Atlas集群时对新的MONGODB-AWS
身份验证机制的支持。值说明RFC5802 使用 SHA-1 哈希函数的标准 Salted 挑战响应身份验证机制。RFC7677 使用 SHA-256 哈希函数的标准 Salted 挑战响应身份验证机制。
需将 featureCompatibilityVersion 设为
4.0
。4.0 版本中的新功能。
MongoDB TLS/SSL 证书身份验证。MONGODB-AWS
使用 AWS IAM 凭证进行外部身份验证,用于连接到MongoDB Atlas集群。请参阅使用 AWS IAM 档案连接到 MongoDB Atlas 集群。GSSAPI (Kerberos)使用 Kerberos 的外部身份验证。此机制仅在MongoDB Enterprise中可用。PLAIN (LDAP SASL)使用 LDAP 进行外部身份验证。您还可以使用PLAIN
对数据库内用户进行身份验证。PLAIN
以纯文本形式传输密码。此机制仅在MongoDB Enterprise中可用。
--gssapiHostName
使用GSSAPI/Kerberos指定服务的主机名。仅当计算机的主机名与 DNS 解析的主机名不匹配时才需要。
此选项仅在 MongoDB Enterprise 中可用。
--gssapiServiceName
使用GSSAPI/Kerberos指定服务名称。仅当服务不使用默认名称
mongodb
时才需要。此选项仅在 MongoDB Enterprise 中可用。
TLS 选项
注意
mongo
禁用对 TLS 1的支持。在使用 TLS 1的系统上进行0加密。 1 + 可用。
提示
请参阅:
为 TLS/SSL 配置 mongod
和 mongos
,以获取 MongoDB 支持的完整文档。
--tls
4.2 版本中的新增功能。
允许连接到已启用 TLS/SSL 支持的
mongod
或mongos
。从版本3开始。 2 。 6 ,如果未指定
--tlsCAFile
或net.tls.CAFile
(或其别名--sslCAFile
或ssl.CAFile
),则在连接到启用 TLS/SSL 的服务器时将使用系统范围的 CA 证书存储区。在 MongoDB 的早期版本中,mongosh
退出并显示无法验证证书的错误。如果使用 x.509 身份验证,则必须指定
--tlsCAFile
或net.tls.CAFile
,除非使用--tlsCertificateSelector
或--net.tls.certificateSelector
。有关 TLS/SSL 和 MongoDB 的详细信息,请参阅为 TLS/SSL 配置
mongod
和mongos
以及客户端的 TLS/SSL 配置。
--tlsCertificateKeyFile <filename>
4.2 版本中的新增功能。
指定包含 TLS/SSL 证书和
mongo
Shell 密钥的.pem
文件。使用相对或绝对路径指定.pem
文件的文件名。使用
--tls
选项连接到需要 客户端证书mongod
mongos
的 或 实例时,需要使用此选项。也就是说,mongo
Shell 会向服务器提供此证书。如果提供的 x,则
mongod
/mongos
会记录连接警告。 509证书会在mongod/mongos
主机系统时间后的30
天内过期。请参阅x。 509证书即将过期trigger警告以了解更多信息。有关 TLS/SSL 和 MongoDB 的详细信息,请参阅为 TLS/SSL 配置
mongod
和mongos
以及客户端的 TLS/SSL 配置。
--tlsCertificateKeyFilePassword <value>
4.2 版本中的新增功能。
指定用于解密证书密钥文件的密码(即
--tlsCertificateKeyFile
)。仅当证书密钥文件已加密时才使用
--tlsCertificateKeyFilePassword
选项。在所有情况下,mongo
都会从所有日志记录和报告输出中编辑密码。如果 PEM 文件中的私钥已加密并且您未指定
--tlsCertificateKeyFilePassword
选项,则mongo
将提示输入密码。请参阅TLS/SSL 证书密码。有关 TLS/SSL 和 MongoDB 的详细信息,请参阅为 TLS/SSL 配置
mongod
和mongos
以及客户端的 TLS/SSL 配置。
--tlsCAFile <filename>
4.2 版本中的新增功能。
指定包含来自证书颁发机构的根证书链的
.pem
文件。此文件用于验证mongod
/mongos
实例提供的证书。使用相对或绝对路径指定
.pem
文件的文件名。从版本3开始。 2 。 6 ,如果未指定
--tlsCAFile
或net.tls.CAFile
(或其别名--sslCAFile
或ssl.CAFile
),则在连接到启用 TLS/SSL 的服务器时将使用系统范围的 CA 证书存储区。在 MongoDB 的早期版本中,mongosh
退出并显示无法验证证书的错误。如果使用 x.509 身份验证,则必须指定
--tlsCAFile
或net.tls.CAFile
,除非使用--tlsCertificateSelector
或--net.tls.certificateSelector
。有关 TLS/SSL 和 MongoDB 的详细信息,请参阅为 TLS/SSL 配置
mongod
和mongos
以及客户端的 TLS/SSL 配置。
--tlsCRLFile <filename>
版本 4.2 中的新增功能:在 MongoDB 4.0 及更早版本中,请参阅
--sslCRLFile
指定包含证书吊销列表的
.pem
文件。使用相对或绝对路径指定.pem
文件的文件名。有关 TLS/SSL 和 MongoDB 的详细信息,请参阅为 TLS/SSL 配置
mongod
和mongos
以及客户端的 TLS/SSL 配置。注意
从版本 4.4 开始,为了检查证书吊销状况,MongoDB 默认
enables
OCSP(在线证书状态协议)作为指定 CRL 文件或使用系统 SSL 证书存储区的替代方法。
--tlsAllowInvalidHostnames
4.2 版本中的新增功能。
禁用对
mongod
/mongos
实例提供的证书中的主机名进行验证。即使服务器证书中的主机名与服务器的主机不匹配,也允许mongo
连接到 MongoDB 实例。有关 TLS/SSL 和 MongoDB 的详细信息,请参阅为 TLS/SSL 配置
mongod
和mongos
以及客户端的 TLS/SSL 配置。
--tlsAllowInvalidCertificates
4.2 版本中的新增功能。
绕过对
mongod
/mongos
实例提供的证书的验证检查,并允许连接到提供无效证书的服务器。注意
从 MongoDB 4.0 开始,如果您指定以下任意 x.509 身份验证选项,则无效证书仅足以建立 TLS 连接,但不足以进行身份验证:
--sslAllowInvalidCertificates
或net.ssl.allowInvalidCertificates: true
(MongoDB 4.0 及更高版本)--tlsAllowInvalidCertificates
或net.tls.allowInvalidCertificates: true
(MongoDB 4.2 及更高版本)
警告
尽管可用,但请尽可能避免使用
--sslAllowInvalidCertificates
选项。如果需要使用--sslAllowInvalidCertificates
,请仅在不可能入侵的系统上使用该选项。如果
mongosh
(和其他MongoDB 工具)使用--sslAllowInvalidCertificates
选项运行,mongosh
(和其他MongoDB 工具)将不会尝试验证服务器证书。这会对过期的mongod
和mongos
证书以及冒充有效mongod
或mongos
实例的外部进程造成漏洞。如果只需禁用 TLS/SSL 证书中的主机名验证,请参阅--sslAllowInvalidHostnames
。使用
allowInvalidCertificates
设置时,MongoDB 将使用无效证书记录为警告。有关 TLS/SSL 和 MongoDB 的详细信息,请参阅为 TLS/SSL 配置
mongod
和mongos
以及客户端的 TLS/SSL 配置。
--tlsFIPSMode
4.2 版本中的新增功能。
指示
mongo
使用 TLS/SSL 库的 FIPS 模式。系统必须有符合 FIPS 标准的库,才能使用--tlsFIPSMode
选项。注意
与 FIPS 兼容的 TLS/SSL 仅在MongoDB Enterprise中可用。有关更多信息,请参阅为 FIPS 配置 MongoDB 。
--tlsCertificateSelector <parameter>=<value>
4.2 版本中的新增功能:可在 Windows 和 macOS 上作为
--tlsCertificateKeyFile
的替代方案。--tlsCertificateKeyFile
和--tlsCertificateSelector
选项是互斥的。您只能指定一个。指定证书属性,以便从操作系统的证书存储中选择匹配的证书。
--tlsCertificateSelector
接受格式为<property>=<value>
的参数,其中属性可以是以下之一:属性值类型说明subject
ASCII 字符串证书上的主题名称或公用名thumbprint
十六进制字符串以十六进制表示的字节序列,用于通过 SHA-1 摘要识别公钥。
thumbprint
有时称为fingerprint
。在使用系统 SSL 证书存储区时,会用 OCSP(在线证书状态协议)来验证证书的吊销状态。
如果提供的 x,则
mongod
/mongos
会记录连接警告。 509证书会在mongod/mongos
主机系统时间后的30
天内过期。请参阅x。 509证书即将过期trigger警告以了解更多信息。
--tlsDisabledProtocols <string>
4.2 版本中的新增功能。
禁用指定的 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
同时启用。您必须至少禁用后两者中的一个,比如TLS1_0,TLS1_1
。若要列出多个协议,请指定为逗号分隔的协议列表,例如
TLS1_0,TLS1_1
。指定的禁用协议将覆盖任何默认禁用的协议。
从版本4开始。 0 ,MongoDB 禁用 TLS 1 。如果 TLS 1 0 1 + 在系统中可用。启用已禁用的 TLS 1 。 0 ,将
none
指定为--tlsDisabledProtocols
。
SSL 选项(已弃用)
重要
从版本4开始。 2 ,SSL 选项已弃用。请改用 TLS 对应项。 SSL 协议已弃用,MongoDB 支持 TLS 1 。 0及更高版本。
注意
mongo
禁用对 TLS 1的支持。在使用 TLS 1的系统上进行0加密。 1 + 可用。
--ssl
自版本 4.2 起已被弃用:请改用
--tls
。允许连接到已启用 TLS/SSL 支持的
mongod
或mongos
。从版本3开始。 2 。 6 ,如果未指定
--tlsCAFile
或net.tls.CAFile
(或其别名--sslCAFile
或ssl.CAFile
),则在连接到启用 TLS/SSL 的服务器时将使用系统范围的 CA 证书存储区。在 MongoDB 的早期版本中,mongosh
退出并显示无法验证证书的错误。如果使用 x.509 身份验证,则必须指定
--tlsCAFile
或net.tls.CAFile
,除非使用--tlsCertificateSelector
或--net.tls.certificateSelector
。有关 TLS/SSL 和 MongoDB 的详细信息,请参阅为 TLS/SSL 配置
mongod
和mongos
以及客户端的 TLS/SSL 配置。
--sslPEMKeyFile <filename>
自版本 4.2 起已被弃用:请改用
--tlsCertificateKeyFile
。指定同时包含 TLS/SSL 证书和密钥的
.pem
文件。使用相对或绝对路径指定.pem
文件的文件名。使用
--ssl
选项连接到启用了mongod
且mongos
CAFile
没有 的allowConnectionsWithoutCertificates
或 时,需要使用此选项。有关 TLS/SSL 和 MongoDB 的详细信息,请参阅为 TLS/SSL 配置
mongod
和mongos
以及客户端的 TLS/SSL 配置。
--sslPEMKeyPassword <value>
自版本 4.2 起已被弃用:请改用
--tlsCertificateKeyFilePassword
。指定用于解密证书密钥文件的密码(即
--sslPEMKeyFile
)。仅当证书密钥文件已加密时才使用--sslPEMKeyPassword
选项。在所有情况下,mongo
都会从所有日志记录和报告输出中编辑密码。如果 PEM 文件中的私钥已加密并且您未指定
--sslPEMKeyPassword
选项,则mongo
将提示输入密码。请参阅TLS/SSL 证书密码。有关 TLS/SSL 和 MongoDB 的详细信息,请参阅为 TLS/SSL 配置
mongod
和mongos
以及客户端的 TLS/SSL 配置。
--sslCAFile <filename>
自版本 4.2 起已被弃用:请改用
--tlsCAFile
。指定包含来自证书颁发机构的根证书链的
.pem
文件。使用相对或绝对路径指定.pem
文件的文件名。从版本3开始。 2 。 6 ,如果未指定
--tlsCAFile
或net.tls.CAFile
(或其别名--sslCAFile
或ssl.CAFile
),则在连接到启用 TLS/SSL 的服务器时将使用系统范围的 CA 证书存储区。在 MongoDB 的早期版本中,mongosh
退出并显示无法验证证书的错误。如果使用 x.509 身份验证,则必须指定
--tlsCAFile
或net.tls.CAFile
,除非使用--tlsCertificateSelector
或--net.tls.certificateSelector
。有关 TLS/SSL 和 MongoDB 的详细信息,请参阅为 TLS/SSL 配置
mongod
和mongos
以及客户端的 TLS/SSL 配置。
--sslCertificateSelector <parameter>=<value>
自版本 4.2 起已被弃用:请改用
--tlsCertificateSelector
。4.0 版本中的新增功能:可在 Windows 和 macOS 上作为
--tlsCertificateKeyFile
的替代方案。--tlsCertificateKeyFile
和--sslCertificateSelector
选项是互斥的。您只能指定一个。指定证书属性,以便从操作系统的证书存储中选择匹配的证书。
--sslCertificateSelector
接受格式为<property>=<value>
的参数,其中属性可以是以下之一:属性值类型说明subject
ASCII 字符串证书上的主题名称或公用名thumbprint
十六进制字符串以十六进制表示的字节序列,用于通过 SHA-1 摘要识别公钥。
thumbprint
有时称为fingerprint
。在使用系统 SSL 证书存储区时,会用 OCSP(在线证书状态协议)来验证证书的吊销状态。
--sslCRLFile <filename>
自版本 4.2 起已被弃用:请改用
--tlsCRLFile
。指定包含证书吊销列表的
.pem
文件。使用相对或绝对路径指定.pem
文件的文件名。注意
从版本 4.4 开始,为了检查证书吊销状况,MongoDB 默认
enables
OCSP(在线证书状态协议)作为指定 CRL 文件或使用系统 SSL 证书存储区的替代方法。有关 TLS/SSL 和 MongoDB 的详细信息,请参阅为 TLS/SSL 配置
mongod
和mongos
以及客户端的 TLS/SSL 配置。
--sslFIPSMode
自版本 4.2 起已被弃用:请改用
--tlsFIPSMode
。指示
mongo
使用 TLS/SSL 库的 FIPS 模式。系统必须有符合 FIPS 标准的库,才能使用--sslFIPSMode
选项。注意
与 FIPS 兼容的 TLS/SSL 仅在MongoDB Enterprise中可用。有关更多信息,请参阅为 FIPS 配置 MongoDB 。
--sslAllowInvalidCertificates
自版本 4.2 起已被弃用:请改用
--tlsAllowInvalidCertificates
。绕过对服务器证书的验证检查,并允许使用无效证书进行连接。
注意
从 MongoDB 4.0 开始,如果您指定以下任意 x.509 身份验证选项,则无效证书仅足以建立 TLS 连接,但不足以进行身份验证:
--sslAllowInvalidCertificates
或net.ssl.allowInvalidCertificates: true
(MongoDB 4.0 及更高版本)--tlsAllowInvalidCertificates
或net.tls.allowInvalidCertificates: true
(MongoDB 4.2 及更高版本)
警告
尽管可用,但请尽可能避免使用
--sslAllowInvalidCertificates
选项。如果需要使用--sslAllowInvalidCertificates
,请仅在不可能入侵的系统上使用该选项。如果
mongosh
(和其他MongoDB 工具)使用--sslAllowInvalidCertificates
选项运行,mongosh
(和其他MongoDB 工具)将不会尝试验证服务器证书。这会对过期的mongod
和mongos
证书以及冒充有效mongod
或mongos
实例的外部进程造成漏洞。如果只需禁用 TLS/SSL 证书中的主机名验证,请参阅--sslAllowInvalidHostnames
。使用
allowInvalidCertificates
设置时,MongoDB 将使用无效证书记录为警告。有关 TLS/SSL 和 MongoDB 的详细信息,请参阅为 TLS/SSL 配置
mongod
和mongos
以及客户端的 TLS/SSL 配置。
--sslAllowInvalidHostnames
自版本 4.2 起已被弃用:请改用
--tlsAllowInvalidHostnames
。禁用 TLS/SSL 证书中的主机名验证。即使证书中的主机名与指定的主机名不匹配,也允许
mongo
连接到 MongoDB 实例。有关 TLS/SSL 和 MongoDB 的详细信息,请参阅为 TLS/SSL 配置
mongod
和mongos
以及客户端的 TLS/SSL 配置。
--sslDisabledProtocols <string>
自版本 4.2 起已被弃用:请改用
--tlsDisabledProtocols
。禁用指定的 TLS 协议。该选项可识别以下协议:
TLS1_0
、TLS1_1
、TLS1_2
,并从版本4开始。 0 。 4 (以及3 . 6 . 9 )、TLS1_3
。在 macOS 上,您无法在禁用
TLS1_1
的情况下,让TLS1_0
和TLS1_2
同时启用。您必须至少禁用后两者中的一个,比如TLS1_0,TLS1_1
。若要列出多个协议,请指定为逗号分隔的协议列表,例如
TLS1_0,TLS1_1
。指定的禁用协议将覆盖任何默认禁用的协议。
从版本4开始。 0 ,MongoDB 禁用 TLS 1 。如果 TLS 1 0 1 + 在系统中可用。启用已禁用的 TLS 1 。 0 ,将
none
指定为--sslDisabledProtocols
。版本3中的新增功能。 6 。 5 。
会话
--retryWrites
版本 3.6 中的新增功能。
在
mongo
Shell 中为会话默认启用可重试写入。有关会话的更多信息,请参阅客户端会话和因果一致性保证。
客户端字段级加密选项
--awsAccessKeyId <string>
AWS 访问密钥
List
Read
与具有 AWS Key Management Service (KMS) 和 权限的 IAM 用户关联。mongo
Shell 使用指定的 访问--awsAccessKeyId
KMS。--awsAccessKeyId
为 Shell 会话启用mongo
客户端字段级加密--awsAccessKeyId
需要 。 需要以下 所有 命令行选项:如果省略
--awsAccessKeyId
,则在 Shell 会话中使用Mongo()
构造函数来启用客户端字段级加密。为了降低访问密钥泄漏到日志中的风险,请考虑将环境变量指定为
--awsAccessKeyId
。
--awsSecretAccessKey <string>
AWS 密钥 与指定的
--awsAccessKeyId
关联。--awsSecretAccessKey
为 Shell 会话启用mongo
客户端字段级加密--awsSecretAccessKey
需要 。 需要以下 所有 命令行选项:如果省略
--awsSecretAccessKey
及其支持选项,则在 Shell 会话中使用Mongo()
来启用客户端字段级加密。为了降低访问密钥泄漏到日志中的风险,请考虑将环境变量指定为
--awsSecretAccessKey
。
--awsSessionToken <string>
AWS 会话令牌 与指定的
--awsAccessKeyId
关联。--awsSessionToken
为 Shell 会话启用mongo
客户端字段级加密--awsSessionToken
需要 。 需要以下 所有 命令行选项:如果省略
--awsSessionToken
及其支持选项,则在 Shell 会话中使用Mongo()
来启用客户端字段级加密。为了降低访问密钥泄漏到日志中的风险,请考虑将环境变量指定为
--awsSessionToken
。
--keyVaultNamespace <string>
集合的完整命名空间 (
<database>.<collection>
) 用作客户端字段级加密的密钥保管库。启用客户端字段级加密需要--keyVaultNamespace
。用于mongo
Shell 会话。如果指定的命名空间不存在,则mongo
创建该命名空间。--keyVaultNamespace
需要以下所有命令行选项:如果省略
--keyVaultNamespace
及其支持选项,则在 Shell 会话中使用Mongo()
构造函数来启用客户端字段级加密。
的知识
~/.dbshell
mongo
在.dbshell
文件中维护命令历史记录。注意
mongo
不会在历史记录文件中记录与身份验证相关的交互,包括authenticate
和db.createUser()
。
~/.mongorc.js
mongo
将从调用mongo
的用户的主目录中读取.mongorc.js
文件。在该文件中,用户可以定义变量、自定义mongo
Shell 提示符或更新他们希望在每次启动 Shell 时更新的信息。如果您使用 shell 在命令行上使用mongo --eval
或通过将.js 文件指定为 mongo来评估 JavaScript 文件或表达式,则mongo
将在 JavaScript 完成处理后读取.mongorc.js
文件。指定
--norc
选项以禁用读取.mongorc.js
。
/etc/mongorc.js
mongo
Shell 在启动时评估的全局mongorc.js
文件。如果用户在HOME
目录中还有一个.mongorc.js
文件,则mongo
Shell 会在评估用户的.mongorc.js
文件之前评估全局/etc/mongorc.js
文件。/etc/mongorc.js
必须对运行 Shell 的用户具有读取权限。 的--norc
mongo
选项仅隐藏用户的.mongorc.js
文件。在 Windows 上,全局
mongorc.js </etc/mongorc.js>
存在于%ProgramData%\MongoDB
目录中。/tmp/mongo_edit{<time_t>}.js
- 由
mongo
在编辑文件时创建。如果文件存在,mongo
会将一个从1
到10
的整数附加到时间值,以尝试创建唯一文件。 %TEMP%mongo_edit{<time_t>}.js
- 由
mongo.exe
在 Windows 上编辑文件时创建。如果文件存在,mongo
会将一个从1
到10
的整数附加到时间值,以尝试创建唯一文件。
environment
EDITOR
指定与
edit
shell 命令一起使用的编辑器的路径。 JavaScript 变量EDITOR
将覆盖EDITOR
的值。
HOME
指定主目录的路径,
mongo
将在该主目录中读取.mongorc.js
文件并写入.dbshell
文件。
HOMEPATH
指定主目录的 Windows 路径,
mongo
将在该主目录中读取.mongorc.js
文件并写入.dbshell
文件。
键盘快捷键
键绑定 | function |
---|---|
向上箭头 | 从历史记录中检索上一个命令 |
向下箭头 | 从历史记录中检索下一条命令 |
首页 | Go到行首 |
结束日期 | Go行尾 |
标签 | 自动完成方法/命令 |
向左箭头 | Go一个字符 |
右箭头 | Go一个字符 |
Ctrl-向左箭头 | Go一个单词 |
Ctrl-右箭头 | Go 一个单词 |
元向左箭头 | Go一个单词 |
元右箭头 | Go 一个单词 |
Ctrl-A | Go行首 |
Ctrl-B | Go一个字符 |
Ctrl-C | 退出 mongo Shell |
Ctrl-D | 删除字符(或退出 mongo shell) |
Ctrl-E | Go到行尾 |
Ctrl-F | Go一个字符 |
Ctrl-G | 中止 |
Ctrl-J | 接受/评估线路 |
Ctrl-K | 终止/删除该行 |
Ctrl-L 或键入 cls | 清屏 |
Ctrl-M | 接受/评估线路 |
Ctrl-N | 从历史记录中检索下一条命令 |
Ctrl-P | 从历史记录中检索上一个命令 |
Ctrl-R | 反向搜索命令历史记录 |
Ctrl-S | 正向搜索命令历史记录 |
Ctrl-T | 转置字符 |
Ctrl-U | 执行 Unix line-discard |
Ctrl-W | 执行 Unix 单词删除 |
Ctrl-Y | 同步复制 |
Ctrl-Z | 挂起(作业控制在 Linux 中起作用) |
Ctrl-H | 向后删除字符 |
Ctrl-I | 完整,与 标签页 相同 |
Meta-B | Go一个单词 |
Meta-C | 将单词大写 |
Meta-D | 终止词 |
Meta-F | Go 一个单词 |
Meta-L | 将单词更改为小写 |
Meta-U | 将单词更改为大写 |
Meta-Y | Yank-pop |
Meta-Backspace | 向后终止词 |
Meta-< | 检索命令历史记录中的第一条命令 |
Meta-> | 检索命令历史记录中的最后一条命令 |
[1] | MongoDB 支持多个键绑定。从2 。 0和mongo 包括对基本 emacs 键绑定的支持。 |
使用
通常,用户会在系统提示符下使用mongo
命令来调用 Shell。请考虑以下其他场景的示例。
连接到具有访问控制的mongod
实例
要使用身份验证和非标准端口连接到远程主机上的数据库,请使用以下形式:
mongo --username <user> --password --host <host> --port 28015
或者,考虑以下简短形式:
mongo -u <user> -p --host <host> --port 28015
将<user>
和<host>
替换为适合您情况的值,并根据需要替换或省略--port
。
如果没有为--password
或-p
命令行选项指定密码, mongo
Shell 会提示输入密码。
使用 DNS 种子列表连接格式连接到副本集
版本 3.6 中的新增功能。
要连接到使用SRV 连接格式描述的副本集,请使用--host
选项指定mongo
Shell 的连接字符串。在以下示例中,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.
DNS 条目的 TXT 记录包括replicaSet
和authSource
选项:
Record TTL Class Text server.example.com. 86400 IN TXT "replicaSet=rs0&authSource=admin"
然后,以下命令将mongo
Shell 连接到副本集:
mongo --host "mongodb+srv://server.example.com/?username=allison"
mongo
Shell 将自动提示您提供在username
选项中指定的用户的密码。
使用 AWS IAM 档案连接到 MongoDB Atlas 集群
4.4 版本新增。
连接到已配置为支持通过 AWS IAM 凭证 进行身份验证的 MongoDB Atlas 集群 ,为 Shell 提供类似于以下内容的 连接字符串 mongo
:
mongo 'mongodb+srv://<aws access key id>:<aws secret access key>@cluster0.example.com/testdb?authSource=$external&authMechanism=MONGODB-AWS'
以这种方式使用 Amazon Web Services IAM 凭证连接到 Atlas 会使用MONGODB-AWS
authentication mechanism
和$external
authSource
,如本示例所示。
如果使用 AWS 会话令牌 此外,在AWS_SESSION_TOKEN
authMechanismProperties
连接字符串 中为其提供 值,如下所示:
mongo 'mongodb+srv://<aws access key id>:<aws secret access key>@cluster0.example.com/testdb?authSource=$external&authMechanism=MONGODB-AWS&authMechanismProperties=AWS_SESSION_TOKEN:<aws session token>'
注意
或者,可以使用--username
、 --password
和--awsIamSessionToken
选项在连接字符串外部提供 AWS 访问密钥 ID、秘密访问密钥和可选会话令牌,如下所示:
mongo 'mongodb+srv://cluster0.example.com/testdb?authSource=$external&authMechanism=MONGODB-AWS' --username <aws access key id> --password <aws secret access key> --awsIamSessionToken <aws session token>
当作为命令行参数提供时,这三个选项无需进行百分号编码。
您还可以使用标准 AWS IAM 环境变量 在您的平台上设置这些凭证 。当您使用 时,mongo
ShellMONGODB-AWS
authentication mechanism
会检查以下环境变量:
AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
AWS_SESSION_TOKEN
如果设置,则无需在连接字符串中或通过mongo
Shell 的显式选项(即--username
和--password
)指定这些档案。
以下示例会在 bash
Shell 中设置这些环境变量:
export AWS_ACCESS_KEY_ID='<aws access key id>' export AWS_SECRET_ACCESS_KEY='<aws secret access key>' export AWS_SESSION_TOKEN='<aws session token>'
在其他Shell中设置环境变量的事务语法会有所不同。有关更多信息,请参阅适用于您的平台的文档。
您可以使用以下命令验证这些环境变量是否已设置:
env | grep AWS
一旦制定,以下示例将使用这些环境变量连接到 MongoDB Atlas 集群:
mongo 'mongodb+srv://cluster0.example.com/testdb?authSource=$external&authMechanism=MONGODB-AWS'
针对mongo
Shell 执行 JavaScript
要在启动 Shell 会话之前执行 JavaScript 文件而不评估~/.mongorc.js
文件,请使用以下形式:
mongo --shell --norc alternate-environment.js
要使用身份验证执行 JavaScript 文件,并提示密码而不是在命令行上提供密码,请使用以下形式:
mongo script-file.js -u <user> -p
提示
另请参阅:
使用--eval
执行 JavaScript 代码
您可以使用--eval
选项直接从命令行执行 JavaScript。
例如,以下操作会计算用于查询collection的 JavaScript 字符串并将结果打印为 JSON。
在 Linux 和 macOS 上,您需要使用单引号(例如'
)将 JavaScript 括起来,格式如下:
mongo --eval 'db.collection.find().forEach(printjson)'
在 Windows 上,您需要使用双引号(例如"
)将 JavaScript 括起来,形式如下:
mongo --eval "db.collection.find().forEach(printjson)"
mongos