Tôi đã nhận được câu trả lời này từ nhóm Seattle Brigade -
===
Tôi không thấy start_date được xác định trong mã của bạn dưới dạng khóa trong MongoMapper, vì vậy tôi sẽ giả sử bạn đang tạo đối tượng ngày tháng của riêng mình, trực tiếp qua Ruby hoặc được bao bọc bởi Rails. Theo như tôi biết và ai đó hãy sửa cho tôi, Mongostores tính theo giờ UTC tính bằng mili giây kể từ kỷ nguyên. Vì vậy, khi bạn xác định akey với ánh xạ:date trong MongoMapper, bạn đang bao bọc một đối tượng Thời gian trongRuby.
Do đó, nếu bạn muốn lưu trữ ngày tháng bên trong Mongo và ngày đó không được tạo bởi MongoMapper, hãy đảm bảo rằng bạn tạo đối tượng Thời gian trong UTC.
>> 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
Nhưng hãy coi chừng sự thay đổi thời gian.
>> 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
Chúc các bạn thành công.
===
Và bằng cách sử dụng
Date.to_mongo(start_date)
nó phù hợp với tôi.