2010-09-09 39 views
6

mongo noob的排序,我有一種感覺,我正從錯誤的方向來解決這個問題。如何根據mongo中的現有數據進行更新

我有大約700萬的文檔集合。每個文件有兩個字段,我想要修改(不能替換),基本上他們是大字符串有\\n,我想用\n替換那些。

我花了大約一個小時試圖找到一種方法來「回引用」由查詢返回的對象,這完全不存在。什麼是這樣的最好的方法?

回答

6

你必須查詢所有的文件和一個更新它們之一。如果您在JavaScript中做到這一點,它會是這樣的:

mydb = db.getSisterDB("whateverDBYoureUsing"); 
var cursor = mydb.foo.find(); 
while (cursor.hasNext()) { 
    var x = cursor.next(); 

    /* replace \\n with \n in x's strings ... */ 

    db.foo.update({_id : x._id}, x); 
} 

您可以複製這個到.js文件(比如,replace.js),更改數據庫和集合名稱,並運行它作爲腳本從外殼:

mongo replace.js 
+0

幾乎是我在找的東西:) – 2010-09-09 22:48:21

+0

哎唷,我希望它不會是這個錯綜複雜的... – 2011-02-16 21:00:43