mongosh 控制台是以行为导向的。不过,您也可以使用编辑器来处理多行函数。两种选项如下:
使用外部编辑器
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 环境变量。
设置 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 关闭后可用。