Otrzymałem tę odpowiedź od grupy Seattle Brigade -
===
Nie widziałem start_date zdefiniowanej w twoim kodzie jako klucz w MongoMapper, więc założę, że tworzysz własny obiekt daty, albo bezpośrednio przez Ruby, albo opakowany przez Rails. O ile mi wiadomo i ktoś mnie poprawi, daty Mongostores to czas UTC w milisekundach od epoki. Więc kiedy definiujesz akey za pomocą mapowania :date w MongoMapper, zawijasz obiekt Time w Ruby.
Dlatego jeśli chcesz przechowywać datę w Mongo, a nie została ona stworzona przez MongoMapper, upewnij się, że tworzysz obiekt Time w UTC. MongoMapper zawiera metodę dodawania Date o nazwie to_mongo, której możesz użyć.
>> Time.now.utc
=> Fri Jan 28 03:47:50 UTC 2011
>> require 'date'
=> true
>> date = Date.today
=> #<Date: 4911179/2,0,2299161>
>> Time.utc(date.year, date.month, date.day)
=> Thu Jan 27 00:00:00 UTC 2011
>> require 'rubygems'
=> true
>> require 'mongo_mapper'
=> true
>> Date.to_mongo(date)
=> Thu Jan 27 00:00:00 UTC 2011
Ale uważaj na zmianę czasu.
>> Date.to_mongo(Time.now)
=> Thu Jan 27 00:00:00 UTC 2011
>> Date.to_mongo(Time.now.utc)
=> Fri Jan 28 00:00:00 UTC 2011
Powodzenia.
===
I za pomocą
Date.to_mongo(start_date)
to działa dla mnie.