sql >> Databáze >  >> NoSQL >> MongoDB

Jak převést datum na UTC v MongoMapper &Ruby/Rails?

Tuto odpověď jsem dostal od skupiny Seattle Brigade -

===

Neviděl jsem start_date definované ve vašem kódu jako klíč v MongoMapper, takže předpokládám, že vytváříte svůj vlastní objekt data, buď přímo přes Ruby, nebo zabalený do Rails. Pokud vím a někdo mě prosím opravte, data Mongostores jsou od epochy uváděna jako čas UTC v milisekundách. Takže když definujete akey pomocí mapování :date v MongoMapper, zabalíte objekt Time do Ruby.

Pokud tedy chcete do Mongo uložit datum, které nebylo vytvořeno MongoMapperem, ujistěte se, že jste vytvořili objekt Time v UTC. MongoMapper přichází s metodou Date mixin nazvanou to_mongo, kterou můžete použít.

>> 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 pozor na změnu času.

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

Hodně štěstí.

===

A pomocí

Date.to_mongo(start_date) 

funguje to pro mě.



  1. Nelze určit serializační informace pro *výraz* pomocí .Date

  2. Vytvoření celého modelu pouze pro čtení pomocí Mongoid

  3. Jak mohu v MongoDB mapreduce sloučit objekt hodnot?

  4. Jak používáte Mongoose bez definování schématu?