我正在开发一款需要比较时间的Volt应用。使用如下所示的模型:
class Punchcard < Volt::Model
field :punchtime
end
我可以使用Time对象为punchtime保存模型的实例,并看到它们作为ISODate()对象持久保存到MongoDB中。到目前为止一直很好。
当我想使用低于标准从数据库查询时,我可以看到Volt和volt-mongo正在转向此呼叫:
store.punchcards.where({"punchtime" => {"$lt" => punchtime}}).then...
进入此Mongo查询的(其中&#34; punchtime&#34;是Time对象):
db.punchcards.find({"punchtime": {"$lt": "2015-07-08T10:25:05-0700"}})
即使应该也没有结果。
当我在保存Punchcard模型的实例时跟踪插入调用时,我看到Time对象没有被字符串化:
[INFO] task StoreTasks#save in 11.557ms
with args: "punchcards", ["punchcards", "[]"], {"user_id"=>"925b0eb84bc3d2185d1c693a", "punchtime"=>2015-07-08 16:38:49 -0700, "punch_status"=>"Out", "id"=>"75c1a3c35016d30895d38d28"}
因此,我猜测,因为Time对象在find
调用时被字符串化而不是在保存调用上,Mongo正在对find
进行字符串比较。
如何使用$ lt / $ gt和Volt中的Time对象查询Mongo?
答案 0 :(得分:0)
这应该在master上修复。尝试从master运行,让我知道它是否有效。
gem 'volt', github: 'voltrb/volt'