我正在开发一个需要比较时间的 Volt 应用程序。使用如下所示的模型:
class Punchcard < Volt::Model
field :punchtime
end
我可以使用 Time 对象保存模型的实例以用于打孔时间,并看到它们作为 ISODate() 对象保存到 MongoDB 中。到目前为止一切顺利。
当我想使用小于条件从数据库中查询时,我可以看到 Volt 和 volt-mongo 正在转向这个调用:
store.punchcards.where({"punchtime" => {"$lt" => punchtime}}).then...
(其中“punchtime”是一个 Time 对象)到这个 Mongo 查询中:
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
.
如何在 Volt 中使用 $lt / $gt 和 Time 对象查询 Mongo?