Docs 菜单
Docs 主页
/
MongoDB Shell
/

使用命令编辑器

在此页面上

  • 使用外部编辑器
  • 使用内置编辑器
  • 举例

mongosh控制台是面向行的。不过,您也可以使用编辑器来处理多行函数。有两个选项:

  • edit 命令和外部编辑器结合使用。

  • 使用 .editor 命令,该命令是一个内置编辑器。

mongoshedit 命令与外部编辑器配合使用。 您可以在运行 mongosh 的 shell 或 mongosh 中配置外部编辑器。

如果在两个位置都配置了编辑器,则在 mongosh 中配置的编辑器将优先。

要在mongosh 内设置编辑器,请使用 config.set()命令。

config.set( "editor", "vi" )

更多示例请参见设置外部编辑器

您可以通过三种方式使用 edit

自行输入 edit 开始新的编辑会话。

edit

如果在不带任何参数的情况下启动编辑会话,编辑器将打开并加载最后一次编辑。请参阅示例,编辑命令

如果控制台命名空间中存在参数,可以使用 edit 来更新该参数。

var albums = [ ];
edit albums
  • 变量 albums 在第一行进行设置。

  • 第二行打开外部编辑器以编辑 albums 的值。

要在外部编辑器中编辑语句,请使用语句调用 edit,例如 db.collection.insertMany()

edit db.digits.insertMany( [] )

编辑 db.music.insertMany( [] ) 并退出外部编辑器,mongosh 控制台可能如下所示:

prompt> db.digits.insertMany([{ "zero": 0 }, { "one": 1 }, { "two": 2 }])

退出外部编辑器时,系统会将语句复制到控制台输入行,准备运行。它不会自动运行。按<enter> 运行语句,或按<ctrl> + c 取消运行。

.editor 命令提供基本的多行编辑功能。

编辑器不保存代码。关闭内置编辑器后,您所作的更改将加载到全局范围中。如果您编辑过程中有调用任何函数或命令,则相应函数或命令将在您关闭编辑器后运行。

要启动内置编辑器:

.editor

输入 <ctrl> + d 退出并运行函数。

请参阅使用内置编辑器。

如果在运行 mongosh 的 Shell 中设置了 EDITOR 环境变量,则 edit 命令将使用该编辑器。

如果还设置了 mongosh editor 属性,mongosh 将改用该程序。 editor 属性会覆盖EDITOR 环境变量。

应在启动 mongosh 前设置环境变量。

bashzsh 中设置环境变量:

export EDITOR=vi

当您在 mongosh 控制台中运行 edit 时,vi 编辑器将打开。

注意

您也可以使用process.env.<VARIABLE>mongosh 中设置环境变量。

mongosh 中设置 EDITOR 环境变量:

process.env.EDITOR = 'nano'

环境变量只针对当前的 mongosh 进行更新。 当 mongosh 退出时,更新不会持续。

要在 mongosh 中将 nano 设置为编辑器,请使用config.set()命令。

config.set( "editor", "nano" )

当您在 mongosh 控制台中运行 edit 时,nano 编辑器将打开。

注意

mongosh 将尝试使用任何已配置的程序。 less 等程序会起作用。 其他程序,如 grep,可能会崩溃或出现意外结果。

使用 edit 启动一个编辑会话。如果编辑器已在当前控制台会话中使用,则编辑器将打开上次编辑的内容。

以下语句存在一个语法错误。突出显示的行中缺少一个逗号:

// WARNING: This code contains an error
db.users.insertMany( [
{ "name": "Joey", "group": "sales" }
{ "name": "Marie", "group": "sales" },
{ "name": "Elton", "group": "accounting" },
{ "name": "Paola", "group": "marketing" }
] )

要设置示例,请执行以下操作:

  1. 复制示例代码。

  2. 输入 edit 以启动编辑会话。

  3. 将示例代码粘贴到编辑器中。

  4. 退出编辑器。

  5. enter

当您退出编辑器时,它会将示例代码复制到命令行。mongosh 会在代码运行时返回错误。

要重新加载示例代码,请输入不带任何参数的 edit

// WARNING: This code contains an error
db.users.insertMany([{
"name": "Joey",
"group": "sales"
} {
"name": "Marie",
"group": "sales"
},
{
"name": "Elton",
"group": "accounting"
},
{
"name": "Paola",
"group": "marketing"
}
])

代码已重新格式化,以便于编辑。在此情况下,突出显示的行中缺少的逗号会导致文档排版无法对齐。

Visual Studio 需要一个特殊参数才能作为外部编辑器运行。在 Visual Studio 中使用 --wait

设置环境变量:

export EDITOR="/usr/local/bin/code --wait"

您还可以使用 config.set() 设置编辑器。 如果 Visual Studio 位于您的 PATH 中,请打开 mongosh 并运行:

config.set("editor", "code --wait")

如果您使用 Visual Studio,还可以使用 MongoDB VS Code 扩展

取消 mongosheditor 变量的设置:

config.set("editor", null)

如果配置了 EDITOR 环境,也请取消设置。从 mongosh 开始运行:

process.env.EDITOR = ''

如果使用 process.env 取消设置EDITOR,退出 mongosh 后更改将不会继续。 要使更改持续有效,请从 shell 中取消 EDITOR 的设置。

启动编辑器:

.editor

mongosh 进入编辑器模式。输入您的代码:

// Entering editor mode (^D to finish, ^C to cancel)
var albums =
[
{ "artist": "Beatles", "album": "Revolver" },
{ "artist": "The Monkees", "album": "Head"}
]
db.music.insertMany( albums )

要退出编辑器,

  • <ctrl> + d 退出并运行函数

  • <ctrl> + c 退出且不运行函数

使用 .editor 声明的对象(如本示例中的 albums)将添加到全局范围。它们在 .editor 关闭后可用。

后退

配置