java - 如何在 MongoDb 中保存时间戳类型值 | java

标签 java mongodb spring-data-mongodb bson

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

相关文章:

java - DWR 对 JavaScript 变量的响应

聚合框架中的 Mongodb $cond

java - 如何通过内部映射中的参数查找 mongo 文档(最好使用 Spring MongoTemplate)

java - 手动分配 ID 时,Spring Data MongoDB 注释 @CreatedDate 不起作用

java - Android:删除选定的列表项

java - "BufferedReader"与 "java.io.BufferedReader"。有关系吗?

javascript - cursor.map().toArray() 与 cursor.toArray().then(array => array.map())

MongoDB - 一次聚合多个变量的最大值/最小值/平均值

java - Spring 数据蒙戈 : How to save batch ignoring all duplicate key errors?

java - 注入(inject)多个 EJB