从 Java 驱动程序中,我想在 MongoDb 中保存一个类似于 json 的文档
{ "ts" : Timestamp(1421006159, 4)}
我尝试过的选项。
选项 1: Map doc=new HashMap(1);
doc.put("ts", new BSONTimeStamp());
它导致以下不需要的格式
{"ts" : {
"_inc" : 0,
"_class" : "org.bson.types.BSONTimestamp"
}}
选项 2:
doc.put("ts",new Timestamp(new Date().getTime()));
结果:
{"ts" : ISODate("2015-01-12T05:36:43.343Z")}
最佳答案
我将以下内容与默认的 mongodb-java-driver 一起使用(没有 spring 数据)。
DBObject doc= new BasicDBObject();
doc.put("ts", new BSONTimeStamp(1421006159, 4));
而 MongoDB 的查找结果是:
{ "_id" : ObjectId("54b396da7fe45ee2d6c5e03a"), "ts" : Timestamp(1421006159, 4) }
所以 BSONTimeStamp
到类名和类属性的序列化以及它们的值取决于 spring-data-mongodb 序列化程序。您应该使用默认的 java-mongodb-driver 或使用 Java Date
和 MongoDB 中的 ISODate
格式。
或者也许您可以扩展 spring-data-mongodb 序列化程序并为 BSONTimeStamp
类编写自己的序列化程序和反序列化程序以使用 MongoDB Timestamp 类型。
关于java - 如何在 MongoDb 中保存时间戳类型值 | java ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27895955/