使用外部编辑器从MongoDB编辑对象不会更新对象

时间:2014-10-02 12:21:34

标签: mongodb editor notepad++ mongo-shell

我正在使用Mongo shell。我已将编辑器设置为我的记事本++路径。我创建了一个对象,然后使用EDIT命令使用notepad ++编辑对象,但它不会更新对象。

// mongo shell
var pow = { name: "teest" }; 
edit pow
// notepad++ opens a document called 'mongo_edit141225123.js' that resides
// in C:\users\...\Appdata\local\temp
// I edit the object, save and close notepad++
pow // object isn't updated :(

我错过了什么?

1 个答案:

答案 0 :(得分:1)

这里似乎有一些警告。但我可以描述一下我是如何工作的:

  1. 设置PATH环境变量以包含记事本++可执行文件的路径。请注意,“应用”此更改并且在执行此操作时没有现有的命令行窗口。或者至少在这一步完成后再开一个新的。

  2. 在命令shell窗口中指定EDITOR变量,或者在设置PATH环境变量的相同系统属性下设置该变量。由于程序目录在PATH中,因此只需设置可执行文件名:

    set EDITOR="notepad++"
    
  3. 启动您的mongo shell并转到编辑变量:

    > edit something
    
  4. 这将启动指定的编辑器,首先使用“undefined”变量。输入“有效”的内容,因为任何无效的JavaScript声明都将被丢弃。现在是重要的一部分。在您进行编辑和“关闭”后,点击“标签关闭”图标,然后不要关闭整个编辑器,如下所示:

    enter image description here

  5. 最后一部分似乎是最重要的部分。如果系统提示您保存(并且您可能会保存),请执行此操作。只有在“关闭”选项卡之后(并保存),您才应该关闭编辑器本身。

    如果您随后从mongo shell发出相同的edit something,则编辑器将打开您之前编辑过的内容。

    如果您,请先关闭此编辑器窗口,然后您应该会看到一个打开的附加标签页以及包含之前内容的原始标签页。但是后续更改将丢失,因为shell现在正在跟踪不同的临时文件。

    所以按照这些步骤,你应该是正确的。我希望与其他外部编辑器存在类似的问题,这些问题实际上会以类似的方式解决。