使用命令编辑器
mongosh
控制台是以行为导向的。不过,您也可以使用编辑器来处理多行函数。两种选项如下:
使用外部编辑器
mongosh
edit
命令与外部编辑器配合使用。 您可以在运行 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
环境变量。
设置 EDITOR
环境变量
应在启动 mongosh
前设置环境变量。
在 bash
或 zsh
中设置环境变量:
export EDITOR=vi
当您在 mongosh
控制台中运行 edit
时,vi
编辑器将打开。
注意
您也可以使用process.env.<VARIABLE>
在 mongosh
中设置环境变量。
从 mongosh
中设置 EDITOR 环境变量:
process.env.EDITOR = 'nano'
设置 editor
属性
要在 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" } ] )
要设置示例,请执行以下操作:
复制示例代码。
输入
edit
以启动编辑会话。将示例代码粘贴到编辑器中。
退出编辑器。
按
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 需要一个特殊参数才能作为外部编辑器运行。在 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 扩展。
取消设置外部编辑器
取消 mongosh
中 editor
变量的设置:
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
关闭后可用。