時間を比較する必要がある 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"}})
結果が返されますが、結果は返されません。
パンチカード モデルのインスタンスを保存するときに挿入呼び出しをトレースすると、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
ますが、save 呼び出しでは文字列化されないため、Mongo はfind
.
Volt で $lt / $gt および Time オブジェクトを使用して Mongo にクエリを実行するにはどうすればよいですか?