sql >> Database teknologi >  >> NoSQL >> MongoDB

Sådan konverteres Date til UTC i MongoMapper &Ruby/Rails?

Jeg fik dette svar fra Seattle Brigade-gruppen -

===

Jeg så ikke start_date defineret i din kode som en nøgle i MongoMapper, så jeg antager, at du opretter dit eget datoobjekt, enten direkte via Ruby eller pakket ind af Rails. Så vidt jeg ved, og nogen bedes korrigere mig, dateres Mongostores som UTC-tid i millisekunder siden epoken. Så når du definerer en nøgle med en :date mapping i MongoMapper, pakker du et Time-objekt ind i Ruby.

Derfor, hvis du vil gemme en dato inde i Mongo, og den ikke blev oprettet af MongoMapper, skal du sørge for at oprette et Time-objekt i UTC. MongoMapper kommer med en Date mixin-metode kaldet to_mongo, som du kan bruge.

>> 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

Men pas på tidsændringen.

>> 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

Held og lykke.

===

Og ved at bruge

Date.to_mongo(start_date) 

det virker for mig.



  1. Opdaterer indlejret array inde i array mongodb

  2. Mongodb betinget sortering

  3. MongoDB - Geospatial skæring af to polygoner

  4. Sådan tilslutter du dig to samlinger i mongo uden opslag