Razvan
Razvan

Reputation: 326

editing objects from MongoDB with an external editor doesn't update the object

I'm using the Mongo shell. I've set my EDITOR to my notepad++ path. I create an object and then I use the EDIT command to edit the obeject using notepad++ but it doesn't update the object.

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

what am I missing?

Upvotes: 1

Views: 3675

Answers (1)

Neil Lunn
Neil Lunn

Reputation: 151132

There seem to be a few caveats here. But I can describe how I got this working:

  1. Set the PATH environment variable to include the path to the notepad++ executable. Note to both "apply" this change and not have an existing command line window when doing so. Or at least open a new one once this step is complete.

  2. Specify an EDITOR variable in your command shell window, or otherwise set that under the same system properties as setting the PATH environment variable. Since the program directory is in the PATH just set the executable name:

    set EDITOR="notepad++"
    
  3. Launch your mongo shell and go to edit a variable:

    > edit something
    
  4. This will launch the specified editor, with an "undefined" variable at first. Type in something "valid", as any invalid JavaScript declaration will be discarded. Now for the important part. After your edit and when "closing" click the "tab close" icon and do not close the entire editor as shown:

    enter image description here

That last part seems to be the most important. If you are prompted to save (and you likely will be ) then do so. Only "after" the tab has been closed (and saved) should you then close the editor itself.

If you then subsequently issue the same edit something from the mongo shell, then the editor will open with the content that you edited before.

If you don't follow this and just close the editor window first, then you should see an additional tab opened and the original tab with the content that you had before. But subsequent changes will be lost as the shell is now tracking a different temporary file.

So follow those steps and you should be right. I would expect there are similar issues with other external editors that will actually resolve in a similar way.

Upvotes: 1

Related Questions