2014-04-25 117 views
0

我試圖在特定的時間保存到我的MongoDB數據庫 使用類似的JavaScript日期對象:節省時間MongoDB中

var currenttime = new Date(); 
currenttime.setHours(14); 
currenttime.setMinutes(37); 

db.test.insert({time: currenttime}); 

但是我注意到,不僅是小時和分鐘撲出, 但也是日期。我正在尋找一種方法,只保存小時數和 分鐘,但以某種方式,我仍然可以做得比操作 更少。有沒有辦法做到這一點?

+4

日期對象中的日期信息不會佔用太多空間,所以它不會妨礙,它很快且很簡單。否則存儲新的Date()。toISOString()。split(「T」)[1] – dandavis

回答

0

MongoDb Date只有64位,另一方面,如果您將時間存儲爲2 32位整數(小時和分鐘),則您將已經使用這些64位。如果您將它們保存爲4個字母的字符串,則會更多。

所以你不能獲得空間優勢。但是您將失去查詢數據的優勢。使用2個數字格式查找所有比特定時間更大的元素將更加困難,甚至更難以使用字符串。

所以我會把它們保存爲日期。如果您真的只需要時間 - 並且需要在這段時間進行查詢,則可以執行以下技巧:使所有日期相同。例如:

var a = new Date(); // gives current date and time (note it is UTC datetime) 
a.setYear(2000); 
a.setMonth(0); 
a.setDate(1); 
db.test.insert({time: currenttime}); 

這樣所有的元素將有相同的日期和不同的時間。通過這種方式,您可以正確分類。此外,如果您需要查找時間小於特定時間的所有元素,則可以快速創建年/月/日(2000/0/1)的日期對象,並正確查詢您的數據。

1

您可以考慮將分鐘數保存爲整數字段。

例如,8:30將被轉換爲8小時* 60分鐘+ 30分鐘= 510分鐘。將510保存爲MongoDB中的一個數字。