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

问题描述:

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

// 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 :(

我错过了什么?

+0

我的头顶上,我会说你是“失踪”使用真正的操作系统。但是,EDITOR在你的“mongorc”中是如何定义的? – 2014-10-02 12:40:18

+0

如果我在OS X上使用外部编辑器(textmate)(实际上该文件在启动时是空的),我有同样的问题,但是如果我使用vim或nano保留在shell中进行编辑,则不会发生这种问题。我没有Windows机器在这里测试(稍后),所以会看到,如果在Windows上相同的事情是真的 – 2014-10-02 12:49:57

+0

@NeilLunn我的mongorc.js是空的:) – 2014-10-03 06:41:30

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

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

  2. 在您的命令行窗口中指定EDITOR变量,或者在与设置PATH环境变量相同的系统属性中设置该变量。由于程序目录是在PATH刚才设置的可执行文件的名称:

    set EDITOR="notepad++" 
    
  3. 启动您的蒙戈外壳,去编辑变量:

    > edit something 
    
  4. 这将启动指定的编辑器,用首先是“未定义”变量。输入“有效”的东西,因为任何无效的JavaScript声明都将被丢弃。现在是重要的一部分。您的编辑和在后“关闭”点击“选项卡关闭”图标,并关闭整个编辑器,如图所示:

    enter image description here

半句似乎是最重要的。如果系统提示您保存(并且您可能会),那么请执行此操作。只有在标签关闭(并保存)之后,您才能关闭编辑器本身。

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

如果遵循这个,只是关闭窗口,第一,那么你应该看开了一个额外的选项卡,并用你之前有内容的原始标签。但随着shell现在正在跟踪不同的临时文件,随后的更改将会丢失。

所以按照这些步骤,你应该是对的。我预计会有类似的问题与其他外部编辑会以类似的方式实际解决。

+0

这似乎不工作。另外我想说明的是,我将编辑器更改为默认记事本(c:\ windows \ notepad.exe),它的工作原理如下: 。我猜计算机上的notepad ++无论如何无法保存临时文件或我不知道... – 2014-10-03 08:51:21

+0

@razvan你是否正在遵循这个准确?我对eac step非常具体,因为这是唯一可行的方法。在关闭编辑器 – 2014-10-03 09:03:40

+0

之前,您必须同时保存并关闭该选项卡,如果关闭记事本++和我以前的所有选项卡,它似乎可以正常工作。猜测我没有按照你的指示正确。编辑器的shell连接似乎是问题。我也发现了关于这个问题的这个话题。 http://*.com/questions/21467138/mongodb-editor-variable-mongodb-shell-windows-7。再次感谢,祝你有美好的一天 – 2014-10-03 09:20:05