Docs 菜单
Docs 主页
/
MongoDB Shell
/ /

使用 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>" )
类型
默认
说明
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 对象)会将所有嵌套对象打印到其完整深度。
redactHistory
字符串
remove

控制 Shell 历史记录中记录哪些信息。必须是以下任一项:

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

  • remove:删除包含敏感信息的行。

  • remove-redact:编辑敏感信息。

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": "customer@clients.com" } )

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

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

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

config.set( "redactHistory", "remove" )
db.contacts.find( {"email": "customer@clients.com" } )

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

db.contacts.find( {"email": "customer@clients.com" } )

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

db.contacts.find( {"email": "customer@clients.com" } )
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")

后退

配置设置

在此页面上