2014-10-02 113 views
0

我正在使用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

回答

0

這裏似乎有一些警告。但我可以描述我是如何得到這個工作:

  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://stackoverflow.com/questions/21467138/mongodb-editor-variable-mongodb-shell-windows-7。再次感謝,祝你有美好的一天 – 2014-10-03 09:20:05