我试图使用fasterxml持久化mongo集合中有100个字段的java对象.

例如,101类型的100字段存储如下:

100

我想以ISODate种格式存储它,这在mongo Shell中是可用的.

现在,我知道有一种方法可以格式化对象映射器,以字符串dateformat存储日期.

例如

有办法吗?

推荐答案

你需要的是Jackson Joda Module美元.如果将其导入类路径,可以在映射器上执行以下操作,将其写入所需的时间戳:

ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(new JodaModule());
mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, true);
mapper.writeValueAsString(date);

必要时,可以用POJO替换上面代码示例中的date.

编辑:

public class IsoDateSerializer extends JsonSerializer<DateTime> {
    @Override
    public void serialize(DateTime value, JsonGenerator jgen, SerializerProvider provider) {
        String isoDate = ISODateTimeFormat.dateTime().print(value);
        jgen.writeRaw("ISODATE(\"" + isoDate + "\")");
    }

然后,您可以在mapper上为所有DateTime类型注册它

mapper.addSerializer(DateTime.class, new IsoDateSerializer());

或者使用注释在函数上指定它

@JsonSerializer(using = IsoDateSerializer.class)
public DateTime createdTime;

Mongodb相关问答推荐

MongoDB:子文档中仅存在于父文档中的返回字段?

MongoDB合并按键更新值的对象数组

如何用Python和MongoDB找到单据字段的最大值?

MongoDB - 将对象转换为数组

如何更新mongo中列表最后一个对象的属性

node.js & express - 应用程序 struct 的全局模块和最佳实践

mongodb中集合的最大大小是多少

Mongoose 架构引用和未定义类型ObjectID

Java MongoDB FindOne 获取最后插入的记录

Meteor mongo 驱动程序可以处理 $each 和 $position 运算符吗?

Mongo DB中的Upserting和Id问题

NoSql 参考数据

将 MongoDB 数据库复制到本地计算机

使用 MongoDB Java 驱动程序将 DBObject 转换为 POJO

带有 jQ​​uery Ajax/JSON 前端的 MongoDB 或 CouchDB 中间件

有没有办法自动更新 MongoDB 中的两个集合?

如何使用 MongoDB 以编程方式预拆分基于 GUID 的分片键

使用 Node.js 将许多记录插入 Mongodb 的正确方法

我如何将 mongodb 与electron一起使用?

带有条件的MongoDB聚合查找