4

我正在尝试使用以下方式在 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 格式存储日期?

4

1 回答 1

5

您正在使用 Play JSON 来表示 MongoDB 文档(不是 BSON),并且日期是 Joda 之一,根据 Play JSON 模块转换为 JSON 编号。

您可以直接将 BSON 与驱动程序一起使用,并将日期传递为BSONDateTime.

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

或者(假设 ReactiveMongo 版本 >= 0.11.9)您可以使用MongoDB JSON 扩展表示 $date: date_value

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

ReactiveMongo 序列化支持的 JSON 格式已记录在案

于 2016-12-30T08:41:32.603 回答