我有一个模特:
class SimpleAction include Mongoid::Document field :set_date,:type => Date
我收集了一些数据:
{ “_id” : ObjectId(“4f6dd2e83a698b2518000006”),“name” : “lost”,
“notes” : “”,“set_date(1i)” : “2012”,“set_date(2i)” : “3”,
“set_date(3i)” : “25”,“set_date(4i)” : “13”,“set_date(5i)” : “57”,
“duration” : 15,“todo” : “4” }
您可以在五个字段中看到mongoid存储日期 – set_date(ni).
我有两个问题:
>如何通过mongo控制台客户端中的set_date字段过滤数据?像这样的东西:
db.simple_actions.find({ set_date : { "$lte" : new Date() } })
我的查询没有返回任何数据.
>如何通过Rails控制器中的set_date字段过滤数据?像这样的东西:
@simple_actions = SimpleAction.where(:set_date => { '$lte' => Date.today })
解决方法
我建议不要使用Date,而是使用DateTime:
field :set_date,:type => DateTime
现在不仅将它存储在1个字段中,如下所示:
"set_date" : ISODate("2012-03-14T17:42:27Z")
但Mongoid会正确处理您想要的各种查询转换:
SimpleAction.where( :set_date => { :$lte => Date.today } )