文档菜单
文档首页
/
MongoDB Shell
/

使用编辑器执行命令

本页内容

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

mongosh 控制台是按行排列的。然而,您也可以使用编辑器来处理多行函数。有两个选项

  • 使用带有外部编辑器的 edit 命令使用外部编辑器.

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

mongoshedit 命令与外部编辑器配合使用。您可以在运行 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 命令将使用该编辑器。

如果也设置了 mongosheditor 属性,则 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扩展。

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 关闭后它们可用。

返回

配置