Docs 菜单
Docs 主页
/
MongoDB Manual
/ / /

旧版 Shellmongoshell

在此页面上

  • 说明
  • 语法
  • 选项
  • 的知识
  • environment
  • 键盘快捷键
  • 使用

注意

mongo shell 在 MongoDB v5.0 中已被弃用。替换为 mongosh

较旧的 mongo shell 文档包含在该 MongoDB 版本的相应文档中。

先前版本的快速链接

有关更多信息,请参阅 mongo shell和 mongosh的比较。

mongo是 的交互式JavaScriptshell MongoDB接口,它为系统管理员提供了功能强大的接口,并为开发人员提供了直接使用数据库测试查询和操作的方法。mongo还提供了一个功能齐全的 JavaScript 环境,可与 MongoDB 一起使用。

mongo shell作为MongoDB服务器安装的一部分包含在内。 如果您已经安装了服务器,则mongo shell将安装到与服务器二进制文件相同的位置。

或者,如果您想从mongoshell MongoDB Server单独下载 ,则可以按照以下步骤将该shell 作为独立运行的包安装:

  1. 访问您所用 MongoDB 版本的下载中心:

  2. 从下拉菜单中选择您首选的 VersionPlatform

  3. 根据您的平台选择要下载的Package

    平台
    下载包

    Windows

    zip选择 包以下载包含mongo Shell的存档。

    macOS

    tgz选择 包以下载包含mongo Shell的存档。

    Linux

    选择tgz 包以下载mongo Shell。

  4. mongo shell从存档复制到文件系统上的某个位置。

有关特定于您的平台的其他安装指导,或要将mongo shell作为MongoDB Server安装的一部分进行安装,请参阅适用于您的平台的安装指南。

注意

  • 从MongoDB 4.2(和 4.0.13)开始, mongo shell在连接到非正版MongoDB实例时会显示警告消息,因为这些实例的行为可能与官方MongoDB实例不同;例如 缺失或不完整的特征、不同的特征行为等。

  • mongo 在支持 TLS 1.1 + 的系统上禁用对 TLS 1.0加密的支持。

  • 您可以使用默认设置运行不带任何命令行选项的mongo shell :

    mongo
  • 您可以使用指定主机和端口以及其他连接选项的mongoshell 连接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中连接到数据库,请参阅“打开新连接”。

--norc

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

--quiet

在连接进程静默shell的输出。

--port <port>

指定mongodmongos实例侦听的端口。 如果未指定--port ,则mongo会尝试连接到端口27017

--host <hostname>

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

要连接到副本集,

指定replica set name和设立成员的种子列表。 使用以下形式:

<replSetName>/<hostname1><:port>,<hostname2><:port>,<...>
对于 TLS/SSL 连接 ( --ssl ),
mongosh验证主机名(在--host 选项或连接string 中指定)是否与SAN SANCNmongodmongos 。如果SAN存在,则mongoshCN不匹配。 如果主机名与SAN (或CN )不匹配, mongosh将无法连接MongoDB 4 。 2 ,在执行 SAN 比较时, MongoDB支持比较 DNS 名称或IP地址。 在以前的版本中, MongoDB仅支持 DNS 名称的比较。
对于DNS 种子列表连接

将连接协议指定为mongodb+srv ,然后是 DNS SRV 主机名记录和任何选项。 authSourcereplicaSet 选项(如果包含在连接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-AWSauthentication 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-AWSauthentication 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-AWSauthentication mechanismAmazon 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 版本号。

--verbose

提高连接进程中shell输出的详细程度。

--networkMessageCompressors <string>

版本 3.4 中的新增功能

为此mongo shell与以下对象之间的通信启用网络压缩:

您可以指定以下压缩程序:

  • snappy

  • zlib(从 MongoDB 3.6 开始提供)

  • zstd(从 MongoDB 4.2 开始可用)

重要

当双方都启用网络压缩时,消息就会被压缩。否则,各方之间的消息不会被压缩。

如果指定多个压缩程序,则列出压缩程序的顺序与通信发起者都很重要。例如,如果 mongosh 指定以下网络压缩程序 zlib,snappymongod 指定 snappy,zlib,则在 mongoshmongod 之间的消息使用 zlib

如果各方未分享至少一个通用压缩程序,则各方之间的消息将不会被压缩。例如,如果 mongosh 指定网络压缩程序 zlibmongod 指定 snappy,则 mongoshmongod 之间的消息将不会被压缩。

--ipv6

启用 IPv 6支持。 默认, mongo禁用 IPv 6 。

要通过MongoDB IPv 连接到6 集群,您必须在启动 时同时指定--ipv6 --host <mongod/mongos IPv6 address>mongoshell 。

默认, mongodmongos禁用 IPv 6支持。 --ipv6在连接到 时指定mongod/mongos 不会启用对6 的 IPvmongod/mongos 支持。有关在mongod/mongos上启用 IPv 6支持的文档,请参阅net.ipv6

<db name>

指定要连接的数据库的名称。 示例:

mongo admin

上述命令会将mongoshell MongoDB连接到本地计算机上运行的 部署的 管理员数据库 。您可以使用可解析的主机名或IP解决指定远程数据库实例。 使用/字符将数据库名称与主机名分隔开。 请参阅以下示例:

mongo mongodb1.example.net/test
mongo mongodb1/admin
mongo 10.8.8.10/test

此语法是连接到特定数据库的唯一方法。

要指定备用主机和数据库,必须使用此语法,并且不能使用--host--port

--enableJavaScriptJIT

4.0 版本中的新功能

启用JavaScript引擎的 JIT 编译器。

--disableJavaScriptJIT

在版本4.0中进行了更改: JavaScript引擎的 JIT 编译器现在默认处于禁用状态。

禁用 JavaScript 引擎的 JIT 编译器。

--disableJavaScriptProtection

允许JavaScript javascriptWithScope(*已弃用*) 类型的字段自动编组为JavaScript 中的mongoshell 函数。

设立--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实例用于向mongodmongos进行身份验证的身份验证机制。

在版本4.4中进行了更改: 对于MongoDB 4.4, mongo shell在连接到MongoDB Atlas集群时增加了对新的 MONGODB-AWS身份验证机制的支持。

说明

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 中可用。

注意

mongo 在支持 TLS 1.1 + 的系统上禁用对 TLS 1.0加密的支持。

提示

请参阅:

为 TLS/SSL 配置 mongodmongos以获取 MongoDB 支持的完整文档。

--tls

4.2 版本中的新增功能

允许连接到已启用 TLS/SSL 支持的mongodmongos

如果未指定--tlsCAFilenet.tls.CAFile (或其别名--sslCAFilessl.CAFile ),则在连接到启用 TLS/SSL 的服务器时将使用系统范围的 CA 证书存储区。 在MongoDB的早期版本中, mongosh退出并显示无法验证证书的错误。

如果使用 x.509 身份验证,则必须指定 --tlsCAFilenet.tls.CAFile,除非使用 --tlsCertificateSelector--net.tls.certificateSelector

有关 TLS/SSL 和 MongoDB 的详细信息,请参阅为 TLS/SSL 配置 mongodmongos 以及客户端的 TLS/SSL 配置

--tlsCertificateKeyFile <filename>

4.2 版本中的新增功能

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

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

如果显示的 x.509 证书在 mongod/mongos 主机系统时间后的 30 天内过期,则 mongod / mongos 会在连接时记录警告。

有关 TLS/SSL 和 MongoDB 的详细信息,请参阅为 TLS/SSL 配置 mongodmongos 以及客户端的 TLS/SSL 配置

--tlsCertificateKeyFilePassword <value>

4.2 版本中的新增功能

指定解密证书密钥文件的密码(即--tlsCertificateKeyFile)。

仅当证书密钥文件已加密时才使用--tlsCertificateKeyFilePassword选项。 在所有情况下, mongo都会从所有日志记录和报告输出中编辑密码。

如果 PEM 文件中的私钥已加密并且您未指定--tlsCertificateKeyFilePassword选项,则mongo将提示输入密码。 请参阅TLS/SSL 证书密码。

有关 TLS/SSL 和 MongoDB 的详细信息,请参阅为 TLS/SSL 配置 mongodmongos 以及客户端的 TLS/SSL 配置

--tlsCAFile <filename>

4.2 版本中的新增功能

指定包含来自证书颁发机构的根证书链的.pem文件。 此文件用于验证mongod / mongos实例提供的证书。

使用相对或绝对路径指定.pem文件的文件名。

如果未指定--tlsCAFilenet.tls.CAFile (或其别名--sslCAFilessl.CAFile ),则在连接到启用 TLS/SSL 的服务器时将使用系统范围的 CA 证书存储区。 在MongoDB的早期版本中, mongosh退出并显示无法验证证书的错误。

如果使用 x.509 身份验证,则必须指定 --tlsCAFilenet.tls.CAFile,除非使用 --tlsCertificateSelector--net.tls.certificateSelector

有关 TLS/SSL 和 MongoDB 的详细信息,请参阅为 TLS/SSL 配置 mongodmongos 以及客户端的 TLS/SSL 配置

--tlsCRLFile <filename>

版本 4.2 中的新增功能:在 MongoDB 4.0 及更早版本中,请参阅 --sslCRLFile

指定包含证书吊销列表的 .pem 文件。使用相对或绝对路径指定 .pem 文件的文件名。

有关 TLS/SSL 和 MongoDB 的详细信息,请参阅为 TLS/SSL 配置 mongodmongos 以及客户端的 TLS/SSL 配置

注意

从版本 4.4 开始,为了检查证书吊销状况,MongoDB 默认enables OCSP(在线证书状态协议)作为指定 CRL 文件或使用系统 SSL 证书存储区的替代方法。

--tlsAllowInvalidHostnames

4.2 版本中的新增功能

禁用对mongod / mongos实例提供的证书中的主机名进行验证。 即使服务器证书中的主机名与服务器的主机不匹配,也允许mongo连接到 MongoDB 实例。

有关 TLS/SSL 和 MongoDB 的详细信息,请参阅为 TLS/SSL 配置 mongodmongos 以及客户端的 TLS/SSL 配置

--tlsAllowInvalidCertificates

4.2 版本中的新增功能

绕过对mongod / mongos实例提供的证书的验证检查,并允许连接到提供无效证书的服务器。

注意

如果您指定 --tlsAllowInvalidCertificatesnet.tls.allowInvalidCertificates: true,则无效证书仅足以建立 TLS 连接,但不足以进行身份验证。

警告

尽管可用,但请尽可能避免使用 --sslAllowInvalidCertificates 选项。如果需要使用 --sslAllowInvalidCertificates,请仅在不可能入侵的系统上使用该选项。

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

使用ssl.allowInvalidCertificates设置时,MongoDB 将使用无效证书记录为警告。

有关 TLS/SSL 和 MongoDB 的详细信息,请参阅为 TLS/SSL 配置 mongodmongos 以及客户端的 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_0TLS1_1TLS1_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.

重要

从版本4.2开始,SSL 选项已弃用。 请改用 TLS 对应项。 SSL协议已弃用, MongoDB支持 TLS 1.0及更高版本。

注意

mongo 在支持 TLS 1.1 + 的系统上禁用对 TLS 1.0加密的支持。

--ssl

自版本 4.2 起已被弃用:请改用 --tls

允许连接到已启用 TLS/SSL 支持的mongodmongos

如果未指定--tlsCAFilenet.tls.CAFile (或其别名--sslCAFilessl.CAFile ),则在连接到启用 TLS/SSL 的服务器时将使用系统范围的 CA 证书存储区。 在MongoDB的早期版本中, mongosh退出并显示无法验证证书的错误。

如果使用 x.509 身份验证,则必须指定 --tlsCAFilenet.tls.CAFile,除非使用 --tlsCertificateSelector--net.tls.certificateSelector

有关 TLS/SSL 和 MongoDB 的详细信息,请参阅为 TLS/SSL 配置 mongodmongos 以及客户端的 TLS/SSL 配置

--sslPEMKeyFile <filename>

自版本 4.2 起已被弃用:请改用 --tlsCertificateKeyFile

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

使用--ssl 选项连接到启用了mongodmongos 没有 的 或ssl.CAFile ssl.allowConnectionsWithoutCertificates时,需要使用此选项。

有关 TLS/SSL 和 MongoDB 的详细信息,请参阅为 TLS/SSL 配置 mongodmongos 以及客户端的 TLS/SSL 配置

--sslPEMKeyPassword <value>

自版本 4.2 起已被弃用:请改用 --tlsCertificateKeyFilePassword

指定解密证书密钥文件的密码(即 --sslPEMKeyFile )。 仅当证书密钥文件已加密时才使用--sslPEMKeyPassword选项。 在所有情况下, mongo都会从所有日志记录和报告输出中编辑密码。

如果 PEM 文件中的私钥已加密并且您未指定--sslPEMKeyPassword选项,则mongo将提示输入密码。 请参阅TLS/SSL 证书密码。

有关 TLS/SSL 和 MongoDB 的详细信息,请参阅为 TLS/SSL 配置 mongodmongos 以及客户端的 TLS/SSL 配置

--sslCAFile <filename>

自版本 4.2 起已被弃用:请改用 --tlsCAFile

指定包含来自证书颁发机构的根证书链的 .pem 文件。使用相对或绝对路径指定 .pem 文件的文件名。

如果未指定--tlsCAFilenet.tls.CAFile (或其别名--sslCAFilessl.CAFile ),则在连接到启用 TLS/SSL 的服务器时将使用系统范围的 CA 证书存储区。 在MongoDB的早期版本中, mongosh退出并显示无法验证证书的错误。

如果使用 x.509 身份验证,则必须指定 --tlsCAFilenet.tls.CAFile,除非使用 --tlsCertificateSelector--net.tls.certificateSelector

有关 TLS/SSL 和 MongoDB 的详细信息,请参阅为 TLS/SSL 配置 mongodmongos 以及客户端的 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 配置 mongodmongos 以及客户端的 TLS/SSL 配置

--sslFIPSMode

自版本 4.2 起已被弃用:请改用 --tlsFIPSMode

指示mongo使用 TLS/SSL 库的 FIPS 模式。 系统必须有符合 FIPS 标准的库,才能使用--sslFIPSMode选项。

注意

只有 MongoDB Enterprise 支持与 FIPS 兼容的 TLS/SSL。有关更多信息,请参阅为 FIPS 配置 MongoDB

--sslAllowInvalidCertificates

自版本 4.2 起已被弃用:请改用 --tlsAllowInvalidCertificates

绕过对服务器证书的验证检查,并允许使用无效证书进行连接。

注意

如果您指定 --tlsAllowInvalidCertificatesnet.tls.allowInvalidCertificates: true,则无效证书仅足以建立 TLS 连接,但不足以进行身份验证。

警告

尽管可用,但请尽可能避免使用 --sslAllowInvalidCertificates 选项。如果需要使用 --sslAllowInvalidCertificates,请仅在不可能入侵的系统上使用该选项。

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

使用ssl.allowInvalidCertificates设置时,MongoDB 将使用无效证书记录为警告。

有关 TLS/SSL 和 MongoDB 的详细信息,请参阅为 TLS/SSL 配置 mongodmongos 以及客户端的 TLS/SSL 配置

--sslAllowInvalidHostnames

自版本 4.2 起已被弃用:请改用 --tlsAllowInvalidHostnames

禁用 TLS/SSL 证书中的主机名验证。即使证书中的主机名与指定的主机名不匹配,也支持 mongo 连接到 MongoDB 实例。

有关 TLS/SSL 和 MongoDB 的详细信息,请参阅为 TLS/SSL 配置 mongodmongos 以及客户端的 TLS/SSL 配置

--sslDisabledProtocols <string>

自版本 4.2 起已被弃用:请改用 --tlsDisabledProtocols

禁用指定的 TLS 协议。 该选项可识别以下协议: TLS1_0TLS1_1TLS1_2 ,并且从版本4.0.4开始 (和3.6.9 ), 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 指定为 --sslDisabledProtocols.

3.6.5版本新增

--retryWrites

版本 3.6 中的新增功能

mongo shell中为会话默认启用可重试写入。

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

--awsAccessKeyId <string>

Amazon Web Services访问密钥 ListRead与对Amazon Web ServicesKMS (KMS ) 具有 和 权限的 IAM 用户关联。mongo shell使用指定的--awsAccessKeyId访问权限KMS 。

--awsAccessKeyId为 会话启用 客户端字段级加密 mongoshell需要 。--awsAccessKeyId需要以下所有命令行选项:

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

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

--awsSecretAccessKey <string>

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

--awsSecretAccessKey为 会话启用 客户端字段级加密 mongoshell需要 。--awsSecretAccessKey需要以下所有命令行选项:

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

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

--awsSessionToken <string>

一个 AWS 会话令牌,与指定的 --awsAccessKeyId 相关联。

--awsSessionToken为 会话启用 客户端字段级加密 mongoshell需要 。--awsSessionToken需要以下所有命令行选项:

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

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

--keyVaultNamespace <string>

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

--keyVaultNamespace需要以下所有命令行选项:

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

~/.dbshell

mongo.dbshell文件中维护命令历史记录。

注意

mongo不会在历史记录文件中记录与身份验证相关的交互,包括authenticatedb.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会将一个从110的整数附加到时间值,以尝试创建唯一文件。
%TEMP%mongo_edit{<time_t>}.js
在Windows上由mongo.exe在编辑文件时创建。 如果文件存在, mongo会将一个从110的整数附加到时间值,以尝试创建唯一文件。
EDITOR

指定与 edit shell命令一起使用的编辑器的路径。 JavaScript变量EDITOR将覆盖EDITOR的值。

HOME

指定主目录的路径, mongo将从该主目录读取.mongorc.js文件并写入.dbshell文件。

HOMEDRIVE

在Windows系统上, HOMEDRIVE指定mongo将读取.mongorc.js文件和写入.dbshell文件的目录路径。

HOMEPATH

指定主目录的 Windows 路径, mongo将在该主目录中读取.mongorc.js文件并写入.dbshell文件。

mongo shell支持以下键盘快捷键: [1]

键绑定
function

向上箭头

从历史记录中检索上一个命令

向下箭头

从历史记录中检索下一条命令

房屋

Go行首

End

Go行尾

Tab

自动完成方法/命令

向左箭头

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

完整,与 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命令来调用 。请考虑以下其他场景的示例。

要使用身份验证和非标准端口连接到远程托管上的数据库,请使用以下形式:

mongo --username <user> --password --host <host> --port 28015

或者,考虑以下简短形式:

mongo -u <user> -p --host <host> --port 28015

<user><host>替换为适合您情况的值,并根据需要替换或省略--port

如果没有为--password-p命令行选项指定密码, mongo shell会提示输入密码。

版本 3.6 中的新增功能

要连接到使用 SRV 连接格式 描述的副本集,请使用 选项指定--host 的连接string mongoshell。在以下示例中,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记录包括replicaSetauthSource选项:

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 选项中指定的用户的密码。

4.4 版本新增

MongoDB Atlas连接到已配置为支持通过Amazon Web Services IAM凭证 进行身份验证的 string集群 ,为mongoshell 提供类似于以下内容的 连接 :

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-AWSauthentication mechanism$externalauthSource ,如本示例所示。

如果使用Amazon Web Services 会话令牌 此外,在AWS_SESSION_TOKENauthMechanismProperties 连接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>'

注意

如果 AWS 访问密钥 ID、秘密访问密钥或会话令牌包含以下字符:

: / ? # [ ] @

这些字符必须使用百分比编码进行转换。

或者,可以使用 、 --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 环境变量 在您的平台上设立这些凭证 。当您使用 时, 会检查以下环境变量:mongoshellMONGODB-AWSauthentication 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'

要在启动JavaScript ~/.mongorc.js会话之前执行 文件而不评估shell 文件,请使用以下形式:

mongo --shell --norc alternate-environment.js

要使用身份验证执行JavaScript文件,并提示密码而不是在命令行上提供密码,请使用以下形式:

mongo script-file.js -u <user> -p

提示

另请参阅:

您可以使用--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)"

后退

mongos