在JSON中为Mongo数据库存储格式化日期的最佳方法是什么

时间:2010-04-01 17:09:40

标签: ruby json mongodb

我有个约会时间。我正在使用红宝石,但语言无关紧要。

d =“2010-04-01 13:00:00”

格式化Mongo DB日期的最佳方法是什么?我的意思是'最好',我可以使用某种格式,Mongo会将它识别为日期,并且可能会给我更高级的过滤选项吗?

即:如果格式正确,我可以让Mongo返回月份为“04”的所有记录吗?

谢谢!

3 个答案:

答案 0 :(得分:3)

您根本不需要格式化日期;日期是受支持的数据类型。每个客户端驱动程序应支持标准日期类型的日期,包括ruby one

对于您的示例等高级查询,您可以使用javascript expression作为查找说明符:

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

答案 1 :(得分:1)

在ruby中,您应该使用Time实例,该实例将存储为BSON日期时间类型。您可以像Coady提到的那样使用$ where子句,但最好使用$ lt和$ gt进行范围查询 - 减少开销,并且可以利用索引。

答案 2 :(得分:0)

我不喜欢依赖mongo Date对象。我认为使用'date'对象的Mongo比使用其他数据类型(例如整数)更慢。

我倾向于使用整数(如果你需要时区,也有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}})