2015-10-01 66 views
0

當我的模板被渲染時,我創建了一個計劃到一個空集合中。數據看起來如下:在mongodb中添加一分鐘到日期字段

{ 
    _id: "someid", 
    day: "Saturday", 
    start: Date, 
    end: Date, 
    jobs: [{ 
    _id: '123', 
    start: Date, 
    end: Date 
    }, { 
    _id: '567', 
    start: Date, 
    end: Date 
    }] 
} 

每分鐘,我想更新每個條目的日期加上一分鐘。我可以做到以下幾點

Template.schedule.onCreated(function() { 
    Meteor.setInterval(function() { 
    DaySchedule.update({}, { 
     $inc: { 
     'start': ???, 
     'end': ???, 
     'cycles.start': ???, 
     'cycles.end': ??? 
     }, 
    }); 
    }); 
}); 

這怎麼可以用mongodb來完成?

+0

您可以將日期保存爲實際時間戳而不是日期對象,並使用$ inc來遞增。然而,對於每分鐘執行一次數據庫操作並不是一個好的主意,並且對於一個已知值*也是一個好主意。我的意思是他們沒有意義存儲這樣的值 – diegoaguilar

回答

3

$inc日期和時間尚未實施:SERVER-3174

所以你最好的選擇是計算你的應用程序的新值,然後做$set

0

您可以將日期保存爲整數表示而不是Date對象,並使用$ inc來遞增。當正在使用時,您將檢索該號碼並將其轉換爲日期。

您可以隨時使用$set,正如Sergio的答案所示。

但是它不是用來對數據庫執行單運每分鐘一個好主意,一個還挺已知值。我的意思是在這些邏輯中存儲這樣的價值是沒有意義的。

+0

當你說「實際時間戳」時,你的意思是「unix timestamp」嗎?這不是「實際」,而是整數表示。實際值將是一個DateTime對象(因爲OP已經)。 –

+0

你說得對,我的意思是整數表示。你同意使用MongoDB或DATABASE沒有意義嗎? – diegoaguilar

+0

爲什麼不呢?我確信有這樣的東西有正當的理由。目前還不清楚它是否屬於這種情況,但(在問題中信息太少) –

相關問題