【问题标题】:ObjectMapping java.util.Date to MongoDB "{ "time": ISODate() }" (MongoDB Java Driver + Jackson) [duplicate]ObjectMapping java.util.Date 到 MongoDB“{“time”:ISODate() }”(MongoDB Java Driver + Jackson)[重复]
【发布时间】:2014-12-10 13:56:02
【问题描述】:

我有以下代码在 MongoDB 中插入产品:

// This is just one product, but Im' looping several
ObjectMapper om = new ObjectMapper();
builder.insert( (DBObject)JSON.parse(om.writeValueAsString(product)) );
BulkWriteResult result = builder.execute();

在数据库中,字段 private Date createdTime 变成了这个 JSON 表示:"createdTime" : 1418219627000 (Int64)。换句话说,自 epoc 以来的毫秒数。

我正在寻找的是将它映射到 MongoDB 中的"createdTime" : ISODate("1970-01-15T06:56:07.890Z")。因此,ISODate() 或 Date() 更合适(版本等)。

有什么方法可以做到这一点?使用 Java 8,所以也许其他类型不是 Date()?

【问题讨论】:

  • 还没有找到一个(简洁的)解决方案,使用 Java MongoDB 驱动程序并使用构造函数和 get-methods 来创建对象以进行持久化,而不是。不过需要维护的代码。
  • @mmx73 很高兴您在删除链接后提供了正确答案。我没有删除它。它被另一位审阅者标记为“仅链接”。我反对该名称,但似乎我的论点被否决了。
  • @mmx73 对其他问题的已接受答案也进行批评会很有帮助,以便其他找到它的人知道哪个答案确实有效。感谢您的尝试。
  • @mmx73 顺便说一句,您只需要 15 个代表即可将问题标记为重复。你已经超过那个水平了。 :-)
  • @ErickG.Hagstrom:反正现在它已经关闭了。我有一个很好的文档和完整的答案准备发布......现在运气不好了。关键是,这个问题不是重复的,而是另一个是因为这个问题是之前提出的。这让我有点生气,我改进了另一个问题,以便有一个完整的答案,我把正确的答案放在这里,我唯一得到的是反对票和删除的答案。这没有动力。

标签: java json mongodb jackson


【解决方案1】:

尝试将对象保存为日期格式,它将作为 ISoDate 保存到 mongoDB 中,为了能够再次转换为日期格式,您可以使用 Jodatime 库或 Java 8 中的一些新日期函数

【讨论】:

  • “保存为日期格式”是什么意思?我使用 Object Mapper 从 Date 类型映射,但它会将其转换为整数字段。
  • 当我在@Document元素中使用spring-data mongodb时,我将属性保存为日期格式,无需任何操作将其发送到数据库,因此它可以自动保持ISADate格式,Mongodb java驱动程序可以转换它.
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-14
  • 1970-01-01
相关资源
最近更新 更多