2014-02-17 206 views
1

我一直在這裏搞了一會兒,沒有找到關於如何完成此任務的示例和解釋。MongoDB更新:根據現有字段生成新字段,或更新到位

我有一個文件集合,每個文件都有一個日期/時間字段。理想情況下,我需要爲每個文檔生成一個新的字段,其值基於添加了常數因子的日期/時間字段的時間。

或者,只需簡單更新值就足夠了。

我一直無法弄清楚如何在mongo shell更新語句中引用當前文檔。

這是愚蠢的嗎?我應該放棄並編寫一個應用程序來完成這個看似簡單的操作嗎?

謝謝!

回答

1

有時候簡單地寫出這個問題會帶來一個解決方案。有點哈克,絕對不可思議,但似乎工作:

db.actuals.find().forEach(
    function(d) { 
     var dt = d.date; 
     var ndt = new Date(d.date).setHours(dt.getHours() - 8); 
     db.actuals.update({_id: d._id}, { $set: { local: new Date(ndt) } }); 
    } 
) 
0

它不是愚蠢和任何人誰是做任何SQL編程它的那些你只是假設的事情之一是存在的,你目瞪口呆地獲悉,它不是「T。我也一直在尋找這一點,並空了。您可以在shell中執行的操作是手動轉換腳本。使用db.collection.find()來獲取候選人,並使用它們遍歷它們。這是我們的備份集如何在這樣做之前大屁股遷移

db.config.find().forEach(function(x) { db.config_20131119_bak.insert(x) }); 

你不要在功能上可能會有所不同的,但它的工作非常適合我。