sql >> データベース >  >> NoSQL >> MongoDB

MongoMapper&Ruby / Railsで日付をUTCに変換する方法は?

    シアトル旅団グループからこの回答を得ました-

    ===

    コードでstart_dateがMongoMapperのキーとして定義されているのを見なかったので、Rubyを介して直接、またはRailsでラップして独自の日付オブジェクトを作成していると仮定します。私の知る限り、そして誰かが私を訂正してください、Mongostoresはエポックからのミリ秒単位のUTC時間として日付を記入します。したがって、MongoMapperで:dateマッピングを使用してキーを定義すると、TimeオブジェクトがRubyでラップされます。

    したがって、Mongo内に日付を保存する必要があり、MongoMapperによって作成されていない場合は、UTCでTimeオブジェクトを作成してください。MongoMapperには、使用できるto_mongoという日付ミックスインメソッドが付属しています。

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

    ただし、時間の変更には注意してください。

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

    頑張ってください。

    ===

    そして使用することによって

    Date.to_mongo(start_date) 
    

    それは私のために働きます。



    1. Model.findOneはドキュメントを返しませんが、ラッパーオブジェクトを返します

    2. MongoDBアグリゲーションフレームワークで配列を巻き戻した後に配列インデックスを投影する方法

    3. ObjectIdに対する正規表現を使用してMongoDBをクエリします

    4. マングースマルチアップデート