MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Làm thế nào để chuyển đổi Date thành UTC trong MongoMapper &Ruby / Rails?

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.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Tham chiếu các tài liệu khác theo chuỗi thay vì đối tượng

  2. Cách chính xác để bắt đầu mongodb và express?

  3. arrayFilters trên bản cập nhật php mongodb

  4. MongoDb:Tìm phần tử chung từ hai mảng trong một truy vấn

  5. Trong Mongodb, Làm cách nào để tôi có thể lập chỉ mục trên (các) trường trong (các) bộ sưu tập chỉ trong nút phụ (tập hợp bản sao)