旧版 Shellmongo
shell
注意
mongo
shell 在 MongoDB v5.0 中已被弃用。替换为 mongosh
。
较旧的 mongo
shell 文档包含在该 MongoDB
版本的相应文档中。
先前版本的快速链接
有关更多信息,请参阅 mongo
shell和 mongosh
的比较。
说明
mongo
是 的交互式JavaScriptshell MongoDB接口,它为系统管理员提供了功能强大的接口,并为开发人员提供了直接使用数据库测试查询和操作的方法。mongo
还提供了一个功能齐全的 JavaScript 环境,可与 MongoDB 一起使用。
mongo
shell作为MongoDB服务器安装的一部分包含在内。 如果您已经安装了服务器,则mongo
shell将安装到与服务器二进制文件相同的位置。
或者,如果您想从mongo
shell MongoDB Server单独下载 ,则可以按照以下步骤将该shell 作为独立运行的包安装:
访问您所用 MongoDB 版本的下载中心:
从下拉菜单中选择您首选的 Version和Platform 。
根据您的平台选择要下载的Package :
将
mongo
shell从存档复制到文件系统上的某个位置。
有关特定于您的平台的其他安装指导,或要将mongo
shell作为MongoDB Server安装的一部分进行安装,请参阅适用于您的平台的安装指南。
语法
您可以使用默认设置运行不带任何命令行选项的
mongo
shell :mongo 您可以使用指定主机和端口以及其他连接选项的
mongo
shell 连接string 运行 。例如,以下内容包括tls
:mongo "mongodb://mongodb0.example.com:27017/testdb?tls=true" tls
选项从 MongoDB 4.2开始可用。 在早期版本中,使用ssl
选项。要将
mongo
shell连接到副本集,您可以在连接string中指定副本集成员和名称:mongo "mongodb://mongodb0.example.com.local:27017,mongodb1.example.com.local:27017,mongodb2.example.com.local:27017/?replicaSet=replA" 有关连接string选项的更多信息,请参阅连接字符串。
您可以使用各种命令行选项运行
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
验证主机名(在--host
选项或连接string 中指定)是否与SAN
SAN
CN
mongod
或mongos
。如果SAN
存在,则mongosh
与CN
不匹配。 如果主机名与SAN
(或CN
)不匹配,mongosh
将无法连接MongoDB 4 。 2 ,在执行 SAN 比较时, MongoDB支持比较 DNS 名称或IP地址。 在以前的版本中, MongoDB仅支持 DNS 名称的比较。- 对于DNS 种子列表连接,
将连接协议指定为
mongodb+srv
,然后是 DNS SRV 主机名记录和任何选项。authSource
和replicaSet
选项(如果包含在连接string中)将覆盖 TXT 记录中设置的任何相应的 DNS 配置选项。 使用mongodb+srv:
连接string隐式启用客户端连接的 TLS/SSL(通常使用ssl=true
设置)。 可以通过在查询string中设置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
Amazon Web ServicesID集群,请在此字段或 连接 中指定您的string 访问权限密钥 。或者,该值也可以作为环境变量AWS_ACCESS_KEY_ID
提供。 请参阅 使用MongoDB Atlas Amazon Web ServicesIAM 档案连接到 集群。
--password <password>, -p <password>
指定密码,用于对使用 身份验证 的MongoDB 数据库进行身份验证。 与
--username
和--authenticationDatabase
选项结合使用。 要强制mongo
提示输入密码,请输入--password
选项作为最后一个选项,并省略参数。如果使用MongoDB Atlas 连接到
MONGODB-AWS
authentication mechanism
Amazon Web Services集群,请在此字段或 连接string 中指定您的 秘密访问权限密钥。或者,该值也可以作为环境变量AWS_SECRET_ACCESS_KEY
提供。 请参阅 使用MongoDB Atlas Amazon Web ServicesIAM 档案连接到 集群。
--apiVersion <version number>
版本 5.0 中的新增功能。
指定apiVersion 。
"1"
是目前唯一支持的值。
--apiStrict
版本 5.0 中的新增功能。
指定如果应用程序使用 之外的命令或行为,服务器将使用 APIStrictErrorStable API 进行响应。
如果指定
--apiStrict
,则还必须指定--apiVersion
。
--apiDeprecationErrors
版本 5.0 中的新增功能。
指定如果应用程序使用的命令或行为在指定 apiVersion 中已弃用,服务器将使用APIDeprecationError进行响应。
如果指定
--apiDeprecationErrors
,则还必须指定--apiVersion
。
--awsIamSessionToken <aws session token>
如果使用MongoDB Atlas
MONGODB-AWS
authentication mechanism
Amazon Web Services连接到ID 集群,除了 访问密钥 和秘密访问密钥之外,还使用会话令牌,请在此字段中指定您的Amazon Web Services 会话令牌,或在 连接string 中指定。或者,该值也可以作为环境变量AWS_SESSION_TOKEN
提供。 请参阅 使用MongoDB Atlas cluster Amazon Web ServicesIAM 档案连接到 。仅在使用
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 。要通过MongoDB IPv 连接到6 集群,您必须在启动 时同时指定
--ipv6
--host <mongod/mongos IPv6 address>
和mongo
shell 。默认,
mongod
和mongos
禁用 IPv 6支持。--ipv6
在连接到 时指定mongod/mongos
不会启用对6 的 IPvmongod/mongos
支持。有关在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(*已弃用*) 类型的字段自动编组为JavaScript 中的
mongo
shell 函数。设立
--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
将使用连接string中指定的数据库。如果使用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
身份验证机制的支持。值说明使用 SHA-1 哈希函数的 RFC 5802 标准 Salted 质询响应身份验证机制。
RFC 7677 使用 SHA-256 哈希函数的标准 Salted Challenge Response Authentication Mechanism
需将 featureCompatibilityVersion 设为
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.1 + 的系统上禁用对 TLS 1.0加密的支持。
--tls
4.2 版本中的新增功能。
允许连接到已启用 TLS/SSL 支持的
mongod
或mongos
。如果未指定
--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.509 证书在
mongod/mongos
主机系统时间后的30
天内过期,则mongod
/mongos
会在连接时记录警告。有关 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
文件的文件名。如果未指定
--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
实例提供的证书的验证检查,并允许连接到提供无效证书的服务器。注意
如果您指定
--tlsAllowInvalidCertificates
或net.tls.allowInvalidCertificates: true
,则无效证书仅足以建立 TLS 连接,但不足以进行身份验证。警告
尽管可用,但请尽可能避免使用
--sslAllowInvalidCertificates
选项。如果需要使用--sslAllowInvalidCertificates
,请仅在不可能入侵的系统上使用该选项。如果
mongosh
(和其他MongoDB工具)使用--sslAllowInvalidCertificates
选项运行,mongosh
(和其他MongoDB工具)将不会尝试验证服务器证书。 这会对过期的mongod
和mongos
证书以及冒充有效mongod
或mongos
实例的外部进程造成漏洞。 如果只需禁用 TLS/SSL 证书中的主机名验证,请参阅--sslAllowInvalidHostnames
。使用
ssl.allowInvalidCertificates
设置时,MongoDB 将使用无效证书记录为警告。有关 TLS/SSL 和 MongoDB 的详细信息,请参阅为 TLS/SSL 配置
mongod
和mongos
以及客户端的 TLS/SSL 配置。
--tlsFIPSMode
4.2 版本中的新增功能。
指示
mongo
使用 TLS/SSL 库的 FIPS 模式。 系统必须有符合 FIPS 标准的库,才能使用--tlsFIPSMode
选项。注意
只有 MongoDB Enterprise 支持与 FIPS 兼容的 TLS/SSL。有关更多信息,请参阅为 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.509 证书在
mongod/mongos
主机系统时间后的30
天内过期,则mongod
/mongos
会在连接时记录警告。
--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 开始,如果系统支持 TLS 1.1+,MongoDB 将禁用 TLS 1.0。要启用已禁用的 TLS 1.0,请将
none
指定为--tlsDisabledProtocols
.。
SSL 选项(已弃用)
重要
从版本4.2开始,SSL 选项已弃用。 请改用 TLS 对应项。 SSL协议已弃用, MongoDB支持 TLS 1.0及更高版本。
注意
mongo
在支持 TLS 1.1 + 的系统上禁用对 TLS 1.0加密的支持。
--ssl
自版本 4.2 起已被弃用:请改用
--tls
。允许连接到已启用 TLS/SSL 支持的
mongod
或mongos
。如果未指定
--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
没有 的 或ssl.CAFile
ssl.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
文件的文件名。如果未指定
--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
选项。注意
只有 MongoDB Enterprise 支持与 FIPS 兼容的 TLS/SSL。有关更多信息,请参阅为 FIPS 配置 MongoDB 。
--sslAllowInvalidCertificates
自版本 4.2 起已被弃用:请改用
--tlsAllowInvalidCertificates
。绕过对服务器证书的验证检查,并允许使用无效证书进行连接。
注意
如果您指定
--tlsAllowInvalidCertificates
或net.tls.allowInvalidCertificates: true
,则无效证书仅足以建立 TLS 连接,但不足以进行身份验证。警告
尽管可用,但请尽可能避免使用
--sslAllowInvalidCertificates
选项。如果需要使用--sslAllowInvalidCertificates
,请仅在不可能入侵的系统上使用该选项。如果
mongosh
(和其他MongoDB工具)使用--sslAllowInvalidCertificates
选项运行,mongosh
(和其他MongoDB工具)将不会尝试验证服务器证书。 这会对过期的mongod
和mongos
证书以及冒充有效mongod
或mongos
实例的外部进程造成漏洞。 如果只需禁用 TLS/SSL 证书中的主机名验证,请参阅--sslAllowInvalidHostnames
。使用
ssl.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 开始,如果系统支持 TLS 1.1+,MongoDB 将禁用 TLS 1.0。要启用已禁用的 TLS 1.0,请将
none
指定为--sslDisabledProtocols
.。3.6.5版本新增。
会话
--retryWrites
版本 3.6 中的新增功能。
在
mongo
shell中为会话默认启用可重试写入。有关会话的更多信息,请参阅客户端会话和因果一致性保证。
客户端字段级加密选项
--awsAccessKeyId <string>
Amazon Web Services访问密钥
List
Read
与对Amazon Web ServicesKMS (KMS ) 具有 和 权限的 IAM 用户关联。mongo
shell使用指定的--awsAccessKeyId
访问权限KMS 。--awsAccessKeyId
为 会话启用 客户端字段级加密mongo
shell需要 。--awsAccessKeyId
需要以下所有命令行选项:--awsAccessKeyId
如果省略 ,则在 会话中使用Mongo()
shell构造函数启用客户端字段级加密。为降低访问密钥泄漏到日志中的风险,可考虑将环境变量指定为
--awsAccessKeyId
。
--awsSecretAccessKey <string>
Amazon Web Services密钥 与指定的
--awsAccessKeyId
关联。--awsSecretAccessKey
为 会话启用 客户端字段级加密mongo
shell需要 。--awsSecretAccessKey
需要以下所有命令行选项:--awsSecretAccessKey
如果省略 及其支持选项,则在 会话中使用Mongo()
shell来启用客户端字段级加密。为降低访问密钥泄漏到日志中的风险,可考虑将环境变量指定为
--awsSecretAccessKey
。
--awsSessionToken <string>
一个 AWS 会话令牌,与指定的
--awsAccessKeyId
相关联。--awsSessionToken
为 会话启用 客户端字段级加密mongo
shell需要 。--awsSessionToken
需要以下所有命令行选项:--awsSessionToken
如果省略 及其支持选项,则在 会话中使用Mongo()
shell来启用客户端字段级加密。为降低访问密钥泄漏到日志中的风险,可考虑将环境变量指定为
--awsSessionToken
。
--keyVaultNamespace <string>
集合的完整命名空间(
<database>.<collection>
) 用作客户端字段级加密的密钥保管库。 启用客户端字段级加密需要--keyVaultNamespace
。 用于mongo
shell会话。 如果指定的命名空间不存在,则mongo
创建该命名空间。--keyVaultNamespace
需要以下所有命令行选项:如果省略
--keyVaultNamespace
及其支持选项,则在会话中使用Mongo()
shell构造函数来启用客户端字段级加密。
的知识
~/.dbshell
mongo
在.dbshell
文件中维护命令历史记录。注意
mongo
不会在历史记录文件中记录与身份验证相关的交互,包括authenticate
和db.createUser()
。
~/.mongorc.js
mongo
将从调用mongo
的用户的主目录中读取.mongorc.js
文件。 在该文件中,用户可以定义变量、自定义mongo
shell提示符或更新他们希望在每次启动shell时更新的信息。 如果您使用shell JavaScript在命令行上使用 或通过mongo --eval
为 指定 .js文件mongo 来评估mongo
文件或表达式,则.mongorc.js
将在JavaScript 完成处理 后 读取 文件。指定
--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
- 在Windows上由
mongo.exe
在编辑文件时创建。 如果文件存在,mongo
会将一个从1
到10
的整数附加到时间值,以尝试创建唯一文件。
environment
EDITOR
指定与
edit
shell命令一起使用的编辑器的路径。 JavaScript变量EDITOR
将覆盖EDITOR
的值。
HOME
指定主目录的路径,
mongo
将从该主目录读取.mongorc.js
文件并写入.dbshell
文件。
HOMEPATH
指定主目录的 Windows 路径,
mongo
将在该主目录中读取.mongorc.js
文件并写入.dbshell
文件。
键盘快捷键
键绑定 | function |
---|---|
向上箭头 | 从历史记录中检索上一个命令 |
向下箭头 | 从历史记录中检索下一条命令 |
房屋 | Go行首 |
End | Go行尾 |
Tab | 自动完成方法/命令 |
向左箭头 | Go一个字符 |
右箭头 | Go一个字符 |
Ctrl-向左箭头 | Go一个单词 |
Ctrl-右箭头 | Go一个单词 |
元向左箭头 | Go一个单词 |
元右箭头 | Go一个单词 |
Ctrl-A | Go行首 |
Ctrl-B | Go一个字符 |
Ctrl-C | 退出 |
Ctrl-D | 删除字符(或退出 |
Ctrl-E | Go行尾 |
Ctrl-F | Go一个字符 |
Ctrl-G | 中止 |
Ctrl-J | 接受/评估线路 |
Ctrl-K | 终止/删除该行 |
Ctrl-L 或键入 | 清屏 |
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 | 完整,与 Tab 相同 |
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 键绑定的支持。 |
使用
通常,用户会在系统提示符下使用shell mongo
命令来调用 。请考虑以下其他场景的示例。
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
的连接string 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 版本新增。
MongoDB Atlas连接到已配置为支持通过Amazon Web Services IAM凭证 进行身份验证的 string集群 ,为mongo
shell 提供类似于以下内容的 连接 :
mongo 'mongodb+srv://<aws access key id>:<aws secret access key>@cluster0.example.com/testdb?authSource=$external&authMechanism=MONGODB-AWS'
AtlasAmazon Web Services以这种方式使用 IAM凭证连接到 会使用MONGODB-AWS
authentication mechanism
和$external
authSource
,如本示例所示。
如果使用Amazon Web Services 会话令牌 此外,在AWS_SESSION_TOKEN
authMechanismProperties
连接string 中为其提供 值,如下所示:
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
和 Amazon Web ServicesID选项在连接string--awsIamSessionToken
外部提供 访问密钥 和秘密访问密钥以及可选的会话令牌,如下所示:
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>
当作为命令行参数提供时,这三个选项无需进行百分号编码。
您还可以使用标准Amazon Web Services IAM 环境变量 在您的平台上设立这些凭证 。当您使用 时, 会检查以下环境变量:mongo
shellMONGODB-AWS
authentication mechanism
AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
AWS_SESSION_TOKEN
如果设置,则无需在连接string中或通过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执行JavaScriptJavaScriptshell
要在启动JavaScript ~/.mongorc.js
会话之前执行 文件而不评估shell 文件,请使用以下形式:
mongo --shell --norc alternate-environment.js
要使用身份验证执行JavaScript文件,并提示密码而不是在命令行上提供密码,请使用以下形式:
mongo script-file.js -u <user> -p
使用--eval
执行JavaScript代码
您可以使用--eval
选项直接命令行执行JavaScript 。
示例,以下操作会计算用于查询集合的JavaScript string并将结果打印为JSON 。
在 Linux 和 macOS 上,您需要使用单引号(例如 '
)将 JavaScript 括起来,使用以下形式:
mongo --eval 'db.collection.find().forEach(printjson)'
在Windows上,您需要使用double引号(例如 "
)将JavaScript括起来,使用以下形式:
mongo --eval "db.collection.find().forEach(printjson)"