2

私は、次の方法使用してMongoDBの中に日付を挿入しようとしています。データベースでLong [Play、Scala and ReactiveMongo]ではなく、ISO形式でMongoDBに日付を格納する方法は?

collection.insert(Json.obj("user"->"abc", "joined_date" -> DateTime.now)) 

を:

{              
      "_id" : ObjectId("5865d99718969bca6a09450f"), 
      "user" : "abc",         
      "joined_date" : NumberLong("1483069847066")  
    } 

ここでの問題は、日付がロングミリ秒形式でデータベースに格納されていることが、私は何をしたいですISOの日付形式で保存するのですか?

私は、同じデータを永続化MongoShellで試してみましたdb.example.insert({user:"abc", joined_date:new Date()})と結果は以下の通りです:

{ 
     "_id" : ObjectId("5865d838a4f98c5bb83b1eb8"), 
     "user" : "abc", 
     "joined_date" : ISODate("2016-12-30T03:44:56.824Z") 
} 

だから、どのように私はReactiveMongoを使用してデータベースにISODate形式で日付を保存することができますか?

答えて

2

Play JSONを使用してMongoDB文書(BSONではなく)を表現しています。日付はPlay JSONモジュールに従ってJSON番号に変換されたJodaです。

ドライバでBSONを直接使用し、日付をBSONDateTimeとして渡すことができます。 documentedをしているReactiveMongoのシリアライズでサポートされている

Json.obj("myDate" -> Json.obj("$date" -> dateTimeLong)) 

JSON形式:

BSONDocument("myDate" -> BSONDateTime(..)) 

それともMongoDB JSON extended representation$date: date_valueを使用することができます(ReactiveMongoバージョン> = 0.11.9を想定)。

+0

ありがとうございます。これは私の問題を解決しました。 –

関連する問題