Docs 菜单
Docs 主页
/
mongosh
/ /

使用 API 进行配置设置

config API提供了检查和更新 mongosh配置的方法。 使用config API进行的更新在会话之间持续存在。

注意

可以在mongosh命令行界面中使用config API。 它在嵌入式 Compass shell 中没有影响。

打印当前的mongosh配置:

config

返回 <property> 的当前值:

config.get( "<property>" )

<property> 的当前设置更改为 <value>

config.set( "<property>", <value> )

<property>重置为默认值:

config.reset( "<property>" )
类型
默认
说明

disableLogging

布尔

false

指定MongoDB Shell是否写入日志条目。

displayBatchSize

整型

20

每次游标迭代显示的项目数

enableTelemetry

布尔

true

允许将匿名跟踪和诊断数据发送到 MongoDB。

editor

字符串

null

指定要在 mongosh 控制台中使用的编辑器。如果已设置,则重写 EDITOR 环境变量。

forceDisableTelemetry

布尔

false

仅在全局配置文件中可用。如果为 true,则用户无法手动启用遥测。

historyLength

整型

1000

要存储在 mongoshREPL 的历史记录文件中的项目数。

inspectCompact

整数或布尔值

3

mongosh 在单行中输出的内部元素级别。单行中的多个短数组元素也会组合在一起。

如果设置为 false,则 mongosh 在自己的行上输出每个字段。

inspectDepth

整数或无穷大

6

打印对象的深度。将 inspectDepth 设置为 Infinity(JavaScript 对象)会将所有嵌套对象打印到其完整深度。

logCompressionEnabled

布尔

false

指定MongoDB Shell是否压缩日志文件。当该值为 true 时, MongoDB Shell使用 gzip 来压缩日志。请参阅启用日志压缩。

logLocation

字符串

取决于您的操作系统。请参阅查看Shell日志

MongoDB Shell写入日志文件的目录。指定绝对文件路径。请参阅指定日志文件位置

logMaxFileCount

整数或无穷大

100

MongoDB Shell保留的最大日志文件数。MongoDB Shell达到最大日志文件计数后,将开始删除最早的日志文件,直到计数低于阈值。请参阅修改最大日志文件计数。

logRetentionDays

整数或无穷大

30

MongoDB Shell日志文件的保留天数。如果将此值设立为 Infinity,则不会根据期限删除日志文件。为防止日志存储太大,请始终指定至少一个日志保留条件。请参阅日志保留

logRetentionGB

float 或 Infinity

未设置

用于MongoDB Shell日志的最大空间量(以 GB 为单位)。如果MongoDB Shell日志的总大小超过此值,将从最早的日志开始删除日志文件。

如果将此值设立为 Infinity,则不会根据存储大小删除日志文件。为防止日志存储太大,请始终指定至少一个日志保留条件。请参阅日志保留

redactHistory

字符串

remove

控制在 mongosh 命令历史记录中记录哪些信息。您可以在Shell中通过向上和向下键或 Ctrl+ R访问权限mongosh 命令历史记录。

必须是以下值之一:

  • keep:保留所有历史记录。

  • remove:从历史记录中删除包含敏感命令的行。示例,remove 删除对 db.auth() 或 connect() 的调用。

  • remove-redact:删除包含敏感命令的行并编辑其他历史记录行中的特定字符串,例如文件路径、电子邮件地址和 URL。

showStackTraces

布尔

false

控制堆栈跟踪和错误信息的显示。

snippetAutoload

布尔

true

如果为 true,则在启动时自动加载已安装的代码片段

snippetIndexSourceURLs

字符串

以分号分隔的链接到代码片段注册表的 URL 列表。

snippetRegistryURL

字符串

安装代码段mongosh npm 客户端使用的 npm 注册表。

mongosh “尽最大努力”尝试匹配通常对应于某些类型的敏感信息的模式。

存在匹配的模式:

  • 证书和密钥

  • 电子邮件地址

  • 通用用户目录

  • HTTP(s) URL

  • IP 地址

  • MongoDB连接字符串

某些操作(例如connect() )被视为本质敏感操作。 如果将redactHistory设立为removeremove-redact ,则执行这些操作的行将命令行历史记录中删除。

其他操作(如 find())有时会包含电子邮件地址等敏感信息。除非将 redactHistory 设置为 remove-redact,否则 shell 历史记录将保留输入的这些行。

使用 config API 指定的设置:

  • 覆盖配置文件中指定的设置。

  • 重启后仍然存在。

例子

考虑以下配置文件,其将inspectDepth设置为20

mongosh:
inspectDepth: 20

mongosh 会话期间,运行以下命令将 inspectDepth 设置为 10

config.set( "inspectDepth", 10 )

inspectDepth的值变为10 ,并且即使重新启动mongosh也将保持为10

考虑查看包含许多大型文档的集合。 您可以更新batchSize以限制游标返回的项目数。

config.set("displayBatchSize", 3)

未来的 db.collection.find() 操作每次游标迭代仅返回 3 个文档。

启用堆栈跟踪以查看更详细的错误报告。

config.set("showStackTraces", true)

输出有所不同,如下所示:

// showStackTraces set to 'false'
Enterprise> db.orders.find( {}, { $thisWontWork: 1 } )
MongoError: FieldPath field names may not start with '$'.
// showStackTraces set to 'true'
Enterprise> db.orders.find( {}, { $thisWontWork: 1 } )
Uncaught:
MongoError: FieldPath field names may not start with '$'.
at MessageStream.messageHandler (/usr/bin/mongosh:58878:20)
at MessageStream.emit (events.js:315:20)
at MessageStream.EventEmitter.emit (domain.js:548:15)
at processIncomingData (/usr/bin/mongosh:57954:12)
at MessageStream._write (/usr/bin/mongosh:57850:5)
at writeOrBuffer (_stream_writable.js:352:12)
at MessageStream.Writable.write (_stream_writable.js:303:10)
at Socket.ondata (_stream_readable.js:719:22)
at Socket.emit (events.js:315:20)
at Socket.EventEmitter.emit (domain.js:548:15)

您可以使用 --evalmongosh 从命令行调用 config API。在本例中,--nodb 选项表示 mongosh将在不连接 MongoDB database 的情况下进行更新。

重要

必须为 --eval 表达式和 config 属性使用不同的引号。也就是说,一个用单引号,另一个用双引号。

mongosh --nodb --eval 'config.set("enableTelemetry", true)'

mongosh 返回附加信息以及API调用结果。

Current Mongosh Log ID: 609583b730e14918fa0d363f
Using MongoDB: undefined
Using Mongosh Beta: 0.12.1
For mongosh info see: https://www.mongodb.com/zh-cn/docs/mongodb-shell/
Setting "enableTelemetry" has been changed

比较当 redactHistory 设置为 remove-redactremove 时调用的历史记录。

redactHistory设置为remove-redact模式并输入包含电子邮件解决的查询。

config.set( "redactHistory", "remove-redact" )
db.contacts.find( {"email": "[email protected]" } )

当您按下 up arrow 重播最后一个命令时,将删除电子邮件地址。

db.contacts.find( {"email": "<email>" } ) // Redacted

redactHistory设置为remove模式并输入包含电子邮件解决的查询。

config.set( "redactHistory", "remove" )
db.contacts.find( {"email": "[email protected]" } )

当您按下 up arrow 重放最后一条命令时,电子邮件地址就会出现。

db.contacts.find( {"email": "[email protected]" } )

shell历史记录会反映这些更改。 (请注意,这会首先存储最近输入的内容。)

db.contacts.find( {"email": "[email protected]" } )
config.set( "redactHistory", "remove" )
db.contacts.find( {"email": "<email>" } )
config.set( "redactHistory", "remove-redact" )

如果修改了配置设置并希望将其重置为默认值,请使用config.reset( "<property>" )

  1. historyLength 设置的值更改为 2000

    config.set("historyLength", 2000)
  2. 验证historyLength的更新值:

    config.get("historyLength")
  3. historyLength设置重置为1000默认值:

    config.reset("historyLength")
  4. 验证historyLength的更新值:

    config.get("historyLength")

后退

配置设置

在此页面上

  • 语法
  • 行为
  • 示例