参考 > 参考 > MongoDB软件包组件 > mongo
mongo
¶mongo
是MongoDB的交互式JavaScript Shell界面,它为系统管理员提供了强大的界面,并为开发人员提供了一种直接通过数据库测试查询和操作的方式。mongo
还提供了用于MongoDB的功能齐全的JavaScript环境。
该mongo
外壳程序是MongoDB Server安装的一部分。MongoDB还将mongo
Shell作为独立软件包提供。要下载独立的mongo
shell软件包:
从4.2版开始
--shell
¶启用外壳程序接口。如果您调用mongo命令并指定一个JavaScript文件作为参数,或者用于--eval
在命令行上指定JavaScript,则该--shell
选项在文件执行完后为用户提供shell提示。
--norc
¶防止外壳~/.mongorc.js
在启动时进行采购和评估。
--quiet
¶在连接过程中从外壳输出的静音。
--host
<hostname>
¶指定运行mongod
或的主机的名称
mongos
。如果未指定,则
mongo尝试连接到在本地主机上运行的MongoDB进程。
指定
集合成员的和种子列表。使用以下形式:replica set name
--ssl
),所述mongo
壳验证该主机名(在指定的--host
选项或连接字符串)相匹配的SAN
(或者,如果SAN
不存在,则CN
)在证明书中通过所提供的mongod
或
mongos
。如果SAN
存在,mongo
则与匹配CN
。如果主机名与SAN
(或CN
)不匹配,则mongo
外壳将无法连接。
从MongoDB 4.2开始,在执行SAN比较时,MongoDB支持DNS名称或IP地址的比较。在以前的版本中,MongoDB仅支持DNS名称的比较。
将连接协议指定为mongodb+srv
,后跟DNS SRV主机名记录和所有选项。的authSource
和replicaSet
选项,如果包括在连接字符串中,将覆盖在TXT记录设置任何对应的DNS配置的选项。使用mongodb+srv:
连接字符串会隐式启用ssl=true
客户端连接的TLS / SSL(通常使用设置)。可以通过ssl=false
在查询字符串中进行设置来关闭TLS / SSL选项。
例:
3.6版的新功能。
--eval
<javascript>
¶评估指定为参数的JavaScript表达式。 mongo在评估代码时不会加载其自身的环境。结果,shell环境的许多选项不可用。
--username
<username>
,
-u
<username>
¶指定用于向使用身份验证的MongoDB数据库进行身份验证的用户名。与--password
和
--authenticationDatabase
选项结合使用。
--password
<password>
,
-p
<password>
¶指定用于对使用身份验证的MongoDB数据库进行身份验证的密码。与--username
和--authenticationDatabase
选项结合使用。要强制mongo提示输入密码,请输入--password
选项作为最后一个选项,并省略参数。
--help
,
-h
¶返回有关mongo选项和用法的信息。
--version
¶返回mongo版本号。
--verbose
¶在连接过程中增加外壳程序输出的详细程度。
--networkMessageCompressors
<string>
¶3.4版的新功能。
为此mongo shell与以下对象之间的通信启用网络压缩 :
您可以指定以下压缩器:
重要
当双方都启用网络压缩时,消息将被压缩。否则,双方之间的消息将不被压缩。
如果指定多个压缩器,则列出压缩器的顺序以及通信启动器都很重要。例如,如果一个mongo
壳指定以下网络压缩机zlib,snappy
和mongod
指定
snappy,zlib
,之间的消息mongo
壳和
mongod
用途zlib
。
如果各方不共享至少一个公共压缩器,则各方之间的消息将不被压缩。例如,如果
mongo
外壳程序指定了网络压缩程序
zlib
并mongod
指定snappy
,则mongo
外壳程序和之间的消息mongod
不会被压缩。
--ipv6
¶启用IPv6支持。mongo默认情况下禁用IPv6。
要通过IPv6连接到MongoDB的群集,则必须同时指定和
启动时蒙戈外壳。--ipv6
--host <mongod/mongos IPv6 address>
mongod
并mongos
默认禁用IPv6支持。--ipv6
连接时
指定mongod/mongos
不会在上启用IPv6支持
mongod/mongos
。有关在上启用IPv6支持的文档mongod/mongos
,请参见net.ipv6
。
<db
name>
¶指定要连接的数据库的名称。例如:
上面的命令会将mongo shell 连接到在本地计算机上运行的MongoDB部署的
管理数据库。您可以使用可解析的主机名或IP地址指定远程数据库实例。使用/
字符将数据库名称与主机名分开。请参阅以下示例:
此语法是连接到特定数据库的唯一方法。
--enableJavaScriptJIT
¶版本4.0中的新功能。
启用JavaScript引擎的JIT编译器。
--disableJavaScriptJIT
¶在版本4.0中更改:现在默认情况下禁用JavaScript引擎的JIT编译器。
禁用JavaScript引擎的JIT编译器。
--disableJavaScriptProtection
¶3.4版的新功能。
允许将javascript和
javascriptWithScope类型的字段自动编组到mongo
Shell中的JavaScript函数。
--disableJavaScriptProtection
设置该标志后,可以立即执行文档中包含的JavaScript函数。下面的示例演示了外壳内的这种行为:
默认行为(当mongo
开始没有的
--disableJavaScriptProtection
标志)是嵌入的JavaScript函数转换为不可执行MongoDB的壳型
Code
。下面的示例演示了Shell中的默认行为:
<file.js>
¶指定要运行的JavaScript文件,然后退出。通常,这应该是最后指定的选项。
可选的
要指定要执行的JavaScript文件,并允许
mongo使用提示您输入密码
--password
,请将文件名作为第一个参数,使用
--username
和--password
作为最后一个选项,如下所示:
--shell
文件运行完成后,使用该选项可返回外壳程序。
--authenticationDatabase
<dbname>
¶指定在其中--username
创建指定内容的认证数据库。请参阅身份验证数据库。
如果您没有为指定值--authenticationDatabase
,则mongo将使用连接字符串中指定的数据库。
--authenticationMechanism
<name>
¶默认值:SCRAM-SHA-1
指定mongo实例用于对mongod
或进行身份验证的身份验证机制mongos
。
在版本4.0中进行了更改: MongoDB删除了对不赞成使用的MongoDB Challenge-Response(MONGODB-CR
)身份验证机制的支持。
MongoDB使用SHA-256哈希函数(SCRAM-SHA-256
)添加了对SCRAM机制的支持。
值 | 描述 |
---|---|
SCRAM-SHA-1 | 使用SHA-1哈希函数的RFC 5802标准咸化挑战响应身份验证机制。 |
SCRAM-SHA-256 | 使用SHA-256哈希函数的RFC 7677标准咸化挑战响应身份验证机制。 要求featureCompatibilityVersion设置为 版本4.0中的新功能。 |
MONGODB-X509 | MongoDB TLS / SSL证书认证。 |
GSSAPI(Kerberos) | 使用Kerberos的外部身份验证。此机制仅在MongoDB Enterprise中可用。 |
普通(LDAP SASL) | 使用LDAP的外部身份验证。您还可以PLAIN
用于验证数据库内用户。PLAIN 以纯文本形式传输密码。此机制仅在MongoDB Enterprise中可用
。 |
--gssapiHostName
¶使用GSSAPI / Kerberos指定服务的主机名。仅当计算机的主机名与DNS解析的主机名不匹配时才需要。
此选项仅在MongoDB Enterprise中可用。
--gssapiServiceName
¶使用GSSAPI / Kerberos指定服务的名称。仅当服务未使用默认名称时才需要mongodb
。
此选项仅在MongoDB Enterprise中可用。
看到
为TLS / SSL配置mongod和mongos,以获取有关MongoDB支持的完整文档。
--tls
¶4.2版中的新功能。
启用与mongod
或mongos
已启用TLS / SSL支持的连接。
从版本3.2.6开始,如果未指定--tlsCAFile
或net.tls.CAFile
(或其别名--sslCAFile
或ssl.CAFile
),则在连接到启用了TLS / SSL的服务器时将使用系统范围的CA证书存储。在MongoDB的早期版本中,mongo
shell退出并显示错误,无法验证证书。
要使用x.509身份验证,--tlsCAFile
或者net.tls.CAFile
必须指定,除非使用--tlsCertificateSelector
或
--net.tls.certificateSelector
。或者,如果使用ssl
别名,
--sslCAFile
或net.ssl.CAFile
必须指定,除非使用
--sslCertificateSelector
或net.ssl.certificateSelector
。
有关TLS / SSL和MongoDB的更多信息,请参阅 为客户端的TLS / SSL和 TLS / SSL配置配置mongod和mongos。
--tlsCertificateKeyFile
<filename>
¶4.2版中的新功能。
指定.pem
同时包含TLS / SSL证书和mongo
外壳密钥的文件。.pem
使用相对或绝对路径指定文件的文件名。
使用--tls
选项连接到
需要客户端证书的mongod
或mongos
实例时,此选项是必需的。也就是说,
外壳程序将此证书提供给服务器。mongo
有关TLS / SSL和MongoDB的更多信息,请参阅 为客户端的TLS / SSL和 TLS / SSL配置配置mongod和mongos。
--tlsCertificateKeyFilePassword
<value>
¶4.2版中的新功能。
指定用于解密证书密钥文件的密码(即
--tlsCertificateKeyFile
)。
--tlsCertificateKeyFilePassword
仅当证书密钥文件已加密时才使用该选项。在所有情况下,mongo都会从所有日志记录和报告输出中删除密码。
如果PEM文件中的私钥已加密,并且您未指定该--tlsCertificateKeyFilePassword
选项,则mongo将提示您输入密码。请参阅TLS / SSL证书密码。
有关TLS / SSL和MongoDB的更多信息,请参阅 为客户端的TLS / SSL和 TLS / SSL配置配置mongod和mongos。
--tlsCAFile
<filename>
¶4.2版中的新功能。
指定.pem
包含来自证书颁发机构的根证书链的文件。此文件用于验证mongod
/ mongos
实例提供的证书
。
.pem
使用相对或绝对路径指定文件的文件名。
从版本3.2.6开始,如果未指定--tlsCAFile
或net.tls.CAFile
(或其别名--sslCAFile
或ssl.CAFile
),则在连接到启用了TLS / SSL的服务器时将使用系统范围的CA证书存储。在MongoDB的早期版本中,mongo
shell退出并显示错误,无法验证证书。
要使用x.509身份验证,--tlsCAFile
或者net.tls.CAFile
必须指定,除非使用--tlsCertificateSelector
或
--net.tls.certificateSelector
。或者,如果使用ssl
别名,
--sslCAFile
或net.ssl.CAFile
必须指定,除非使用
--sslCertificateSelector
或net.ssl.certificateSelector
。
有关TLS / SSL和MongoDB的更多信息,请参阅 为客户端的TLS / SSL和 TLS / SSL配置配置mongod和mongos。
--tlsCRLFile
<filename>
¶4.2版中的新功能。
指定.pem
包含证书吊销列表的文件。.pem
使用相对或绝对路径指定文件的文件名。
有关TLS / SSL和MongoDB的更多信息,请参阅 为客户端的TLS / SSL和 TLS / SSL配置配置mongod和mongos。
--tlsAllowInvalidHostnames
¶4.2版中的新功能。
禁用对由mongod
/ mongos
实例提供的证书中的主机名的验证。即使服务器证书中的主机名与服务器的主机不匹配,也允许
mongo连接到MongoDB实例。
有关TLS / SSL和MongoDB的更多信息,请参阅 为客户端的TLS / SSL和 TLS / SSL配置配置mongod和mongos。
--tlsAllowInvalidCertificates
¶4.2版中的新功能。
绕过mongod
/ mongos
实例提供的证书的验证检查,
并允许连接到提供无效证书的服务器。
注意
从MongoDB 4.0开始,如果在使用x.509身份验证时指定
--sslAllowInvalidCertificates
或
(或在MongoDB 4.2中为别名或
),则无效的证书仅足以建立TLS / SSL连接,但不足以进行身份验证。net.ssl.allowInvalidCertificates: true
--tlsAllowInvalidateCertificates
net.tls.allowInvalidCertificates: true
警告
尽管可用,但请避免使用该
--sslAllowInvalidCertificates
选项。如果必须使用
--sslAllowInvalidCertificates
,请仅在不可能进行入侵的系统上使用该选项。
如果mongo
Shell(和其他
MongoDB Tools)与该--sslAllowInvalidCertificates
选项一起运行
,则
mongo
Shell(和其他
MongoDB Tools)将不会尝试验证服务器证书。这会造成过期mongod
和mongos
证书以及伪装成有效mongod
或mongos
实例的外部进程
的漏洞
。如果仅需要禁用TLS / SSL证书中的主机名验证,请参阅--sslAllowInvalidHostnames
。
使用该allowInvalidCertificates
设置时,MongoDB将使用无效证书记录为警告。
有关TLS / SSL和MongoDB的更多信息,请参阅 为客户端的TLS / SSL和 TLS / SSL配置配置mongod和mongos。
--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>
其中属性可以是以下之一:
属性 | 值类型 | 描述 |
---|