Docs HomeMongoDB Shell

Configure Settings Using the API使用API配置设置

On this page本页内容

The config API provides methods to examine and update the mongosh configuration. configAPI提供了检查和更新mongosh配置的方法。Updates made using the config API persist between sessions.使用配置API进行的更新会在会话之间持续。

Note

The config API can be used within the mongosh command line interface. It has no effect in the embedded Compass shell.config API可以在mongosh命令行界面中使用。它在嵌入的Compass外壳中没有效果。

Syntax语法

Print the current mongosh configuration:打印当前mongosh配置:

config

Return the current value for <property>:返回<property>的当前值:

config.get( "<property>" )

Change the current setting of <property> to <value>:<property>的当前设置更改为<value>

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

Reset a <property> to the default value:<property>重置为默认值:

config.reset( "<property>" )

Supported property parameters支持的property参数

KeyTypeDefaultDescription
displayBatchSizeinteger20The number of items displayed per cursor iteration每次游标迭代显示的项目数
enableTelemetrybooleantrueEnables sending anonymized tracking and diagnostic data to MongoDB.允许向MongoDB发送匿名跟踪和诊断数据。
editorstringnullDesignates an editor to use within the mongosh console. 指定要在mongosh控制台中使用的编辑器。Overrides the EDITOR environment variable if set.覆盖EDITOR环境变量(如果已设置)。
forceDisableTelemetrybooleanfalseOnly available in the global configuration file. 仅在全局配置文件中可用。When true, users cannot enable telemetry manually.如果为true,则用户无法手动启用遥测。
historyLengthinteger1000The number of items to store in mongosh REPL's history file.要存储在mongosh REPL的历史文件中的项目数。
inspectCompactinteger or boolean3The level of inner elements that mongosh outputs on a single line. Short array elements are also grouped together on a single line.mongosh在一行中输出的内部元素的级别。短数组元素也被分组在一条线上。
If set to false, mongosh outputs each field on its own line.如果设置为falsemongosh将在自己的行上输出每个字段。
inspectDepthinteger or Infinity6The depth to which objects are printed. Setting inspectDepth to Infinity (the javascript object) prints all nested objects to their full depth.打印对象的深度。将inspectDepth设置为Infinity(javascript对象)会将所有嵌套对象打印到其全部深度。
redactHistorystringremoveControls what information is recorded in the shell history. 控制shell历史记录中记录的信息。Must be one of:必须是以下其中之一:
  • keep: Retain all history.:保留所有历史记录。
  • remove: Remove lines which contain sensitive information.:删除包含敏感信息的行。
  • remove-redact: Redact sensitive information.:重新处理敏感信息。
showStackTracesbooleanfalseControls display of a stack trace along with error messages.控制堆栈跟踪以及错误消息的显示。
snippetAutoloadbooleantrueIf true, automatically load installed snippets at startup.如果为true,则在启动时自动加载已安装的代码段
snippetIndexSourceURLsstringMongoDB RepositoryA semicolon-separated list of URLs that link to a snippet registry.链接到代码段注册表的URL的分号分隔列表。
snippetRegistryURLstringnpm RegistryThe npm registry used by the mongosh npm client that installs snippet.安装snippetmongosh npm客户端使用的npm注册表。

Behavior行为

Remove or Redact Sensitive Information From History从历史记录中删除或重新处理敏感信息

mongosh makes "best-effort" attempts to match patterns that normally correspond to certain kinds of sensitive information.尽“最大努力”尝试匹配通常与某些类型的敏感信息相对应的模式。

There are patterns that match:有匹配的模式:

  • Certificates and keys证书和密钥
  • Email addresses电子邮件地址
  • Generic user directories通用用户目录
  • HTTP(s) URLsHTTP URL
  • IP addressesIP地址
  • MongoDB connection stringsMongoDB连接字符串

Certain operations, such as connect(), are considered inherently sensitive. 某些操作,如connect(),被认为是固有的敏感操作。If redactHistory is set to remove or remove-redact, lines with these operations will be removed from the command line history.如果redactHistory设置为removeremove-redact,则具有这些操作的行将从命令行历史记录中删除。

Other operations, like find(), sometimes have sensitive information like email addresses. 其他操作,如find(),有时会包含电子邮件地址等敏感信息。The shell history will retain these lines as entered unless redactHistory is set to remove-redact.外壳程序历史记录将保留输入的这些行,除非redactHistory设置为remove-redact

Behavior with Configuration File配置文件的行为

Settings specified with the config API:configAPI指定的设置:

Example

Consider the following configuration file that sets the inspectDepth setting to 20:考虑以下配置文件,该文件将inspectDepth设置设置为20

mongosh:
inspectDepth: 20

During your mongosh session you run the following command to set inspectDepth to 10:mongosh会话期间,您可以运行以下命令将inspectDepth设置为10

config.set( "inspectDepth", 10 )

The value of inspectDepth becomes 10, and will remain 10 even when mongosh is restarted.inspectDepth的值变为10,即使在mongosh重新启动时也将保持为10。

Examples示例

Update Number of Items Returned by a Cursor更新游标返回的项目数

Consider viewing a collection with a number of large documents. You can update the batchSize to limit the number of items returned by a cursor.考虑查看包含大量大型文档的集合。您可以更新batchSize以限制游标返回的项目数。

config.set("displayBatchSize", 3)

Future db.collection.find() operations will only return 3 documents per cursor iteration.未来的db.collection.find()操作每次游标迭代只返回3个文档。

Turn On Stack Traces打开堆栈跟踪

Enable stack traces to see more detailed error reporting.启用堆栈跟踪以查看更详细的错误报告。

config.set("showStackTraces", true)

The output differs like this:输出如下所示:

// 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)

Call config API from outside mongoshmongosh外部调用config API

You can call the config API from the command line using --eval with mongosh. 您可以从命令行使用--evalmongosh调用配置API。In this case the --nodb option means mongosh will update without connecting to a MongoDB database.在这种情况下,--nodb选项意味着mongosh将在不连接到MongoDB数据库的情况下进行更新。

Important

You must use different quotation marks for the --eval expression and the config property. 必须为--eval表达式和config属性使用不同的引号。That is, single quotes for one and double quotes for the other.也就是说,一个用单引号,另一个用双引号。

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

mongosh returns additional information along with the result of the API call.mongosh返回附加信息以及API调用的结果。

Current Mongosh Log ID:      609583b730e14918fa0d363f
Using MongoDB: undefined
Using Mongosh Beta: 0.12.1

For mongosh info see: https://www.mongodb.com/docs/mongodb-shell/

Setting "enableTelemetry" has been changed

Redact Sensitive InformationRedact敏感信息

Compare the recalled history when redactHistory is set to remove-redact or remove.redactHistory设置为remove-redactremove时,比较调用的历史记录。

Set redactHistory to remove-redact mode and enter a query containing an email address.设置redactHistoryremove-redact模式并输入包含电子邮件地址的查询。

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

When you press the up arrow to replay the last command the email address is redacted.当您按下up arrow重播最后一个命令时,电子邮件地址将被编辑。

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

Set redactHistory to remove mode and enter a query containing an email address.redactHistory设置为remove模式并输入包含电子邮件地址的查询。

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

When you press the up arrow to replay the last command the email address is present.当您按下up arrow重播最后一个命令时,会显示电子邮件地址。

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

The shell history reflects the changes. shell历史记录反映了这些变化。(Note that this stores the most recent input first.)(请注意,这会首先存储最近的输入。)

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

Reset a Configuration Setting to the Default Value将配置设置重置为默认值

If you modified a configuration setting and want to reset it to the default value, use config.reset( "<property>" ).如果修改了配置设置并希望将其重置为默认值,请使用config.reset( "<property>" )

  1. Change the value of the historyLength setting to 2000:historyLength设置的值更改为2000

    config.set("historyLength", 2000)
  2. Verify the updated value for historyLength:验证historyLength的更新值:

    config.get("historyLength")
  3. Reset the historyLength setting to the default value of 1000:historyLength设置重置为默认值1000

    config.reset("historyLength")
  4. Verify the updated value for historyLength:验证historyLength的更新值:

    config.get("historyLength")