我有个约会时间。我正在使用红宝石,但语言无关紧要。
d =“2010-04-01 13:00:00”
格式化Mongo DB日期的最佳方法是什么?我的意思是'最好',我可以使用某种格式,Mongo会将它识别为日期,并且可能会给我更高级的过滤选项吗?
即:如果格式正确,我可以让Mongo返回月份为“04”的所有记录吗?
谢谢!
答案 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}})