使用编辑器执行命令
的mongosh
控制台是按行排列的。然而,您也可以使用编辑器来处理多行函数。有两个选项
使用外部编辑器
mongosh
的 edit
命令与外部编辑器配合使用。您可以在运行 mongosh
的外壳中或从 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
编辑器。
设置 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
关闭后它们可用。