Mongoid中的日期查询

时间:2011-09-12 16:09:04

标签: ruby-on-rails mongodb mongoid

这已被问了很多,但我仍然面临一些问题。

我收到日期并存储为日期。我需要查询大于和小于,所以我将其更改为时间,再次尝试,但我得到了奇怪的结果。

我正在做这个

Class.where(:event_date.gt => Time.parse(Date.today))

我得到的记录很古老,20世纪40年代,60年代和其他人。我尝试通过在最后添加.utc来转换时间,仅与Date.today进行比较,但到目前为止还没有解决问题。这是由Mongoid

生成的选择器
selector: {:date_utc=>{"$gte"=>Sat Sep 10 21:00:00 UTC 2011}},

我以“2011-09-11”格式收到日期并将其存储在时间字段中。尝试将其解析为Time utc,没有运气。

有什么想法吗?我正在使用Mongoid 2.0.2。以后的版本似乎与我正在使用的其他扩展不兼容。

[更新]

所以问题出在1970年以前的旧日期。我现在的问题是如何处理它们。

1 个答案:

答案 0 :(得分:2)

这是Mongo中的已知错误。见ISSUE 405

原因是Mongo使用无符号数来存储日期,所以在纪元之前的任何东西都会延伸到未来。

幸运的是,此问题已针对今天发布的稳定版本2.0进行了修复。升级到此版本可以解决您的问题。