如何使用volt-mongo在Volt中查询时间少于另一个Time对象?

时间:2015-07-08 23:51:52

标签: mongodb voltrb

我正在开发一款需要比较时间的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?

1 个答案:

答案 0 :(得分:0)

这应该在master上修复。尝试从master运行,让我知道它是否有效。

gem 'volt', github: 'voltrb/volt'