2010-04-01 62 views
4

我有一段時間的日期。我使用紅寶石,但語言應該不重要。在JSON格式化MongoDB存儲日期的最佳方式是什麼

d = 「2010-04-01 13:00:00」

什麼是格式化該日期蒙戈DB的最佳方式?我認爲,'最好'是否存在一種我可以使用的格式,Mongo會將它識別爲日期,並且可能會給我更高級的過濾optons?

ie:如果格式正確,我可以讓Mongo返回月份爲'04'的所有記錄嗎?

謝謝!

回答

3

根本不需要格式化日期;日期是受支持的數據類型。每個客戶端驅動程序都應該支持通過標準日期類型的日期,包括ruby one

對於喜歡你的榜樣高級查詢,您可以使用javascript expression用於查找符:

{"$where": "this.date.getMonth() == 3"} 
+1

只是爲了澄清,因爲它不是很明顯,所以它在上面的代碼示例中表示3而不是4的原因是由於一些神祕的原因,在JavaScript中,月份從0到11。 – Theo 2010-04-05 18:46:36

1

在Ruby中,你應該使用一個時間點,這將得到存儲爲BSON時間類型。您可以使用像Coady這樣的$ where子句,但是使用$ lt和$ gt - 開銷進行範圍查詢會更好,並且可以利用索引。

0

我不喜歡依賴mongo Date對象。我認爲Mongo比'date'對象慢,比其他數據類型(例如整數)慢。

我傾向於使用整數(如果你需要的時區,有TZ領域也是如此,那麼你已經本地化時間):

document = {:some_timestamp => Time.now.to_i} 
@collection.find({'some_timestamp' => {'$gte' => Time.now.to_i}}) 

有時候,我只是使用內置到BSON時間戳::的ObjectId的:

id = BSON::ObjectId.from_time(Time.now) 
@collection.find({'_id' => {'$lte' => id}}) 
相關問題