1

有谁知道 morphia 在创建/修改操作期间是否支持在 mongodb 的集合中创建/更新文档的自动时间戳。

我已经知道这种支持在 mongodb 中不可用。我想知道是否有任何方法可以获取 morphia 驱动程序中数据或文档的最后访问/更新时间。

谢谢,伤心

4

2 回答 2

7

我通常使用所有其他实体扩展的基本实体。它提供 ObjectId、创建日期、最后更改日期、禁用标志、...

相关的代码片段如下所示:

protected Date creationDate;
protected Date lastChange;

// Getters and setters or final setters which don't do anything,
// if you only want to allow the entity to update the values

@PrePersist
public void prePersist() {
    creationDate = (creationDate == null) ? new Date() : creationDate;
    lastChange = (lastChange == null) ? creationDate : new Date();
}
于 2012-12-20T14:51:17.260 回答
1

如果这不是您正在寻找的确切答案,请提前抱歉。但简短的回答是否定的。

最新的Morphia中似乎没有支持该操作的 API。也许有一个错误打开来支持这一点。同时,您应该为 java.util.Date 或 java.sql.Timestamp 使用您最喜欢的构造函数。

Morphia的源代码内置了适当的转换器来处理此TimestampConverter.java

只是切线相关。如果您使用的原因$currentDate是为了避免多个主机之间的时钟偏差问题,那么您就找错了树。尽管文档中没有明确说明$currentDate,但据记录,MongoDB没有解决各种主机之间的时钟偏差。这可以在ObjectId.getTimestamp() 的文档中找到。因此,$currentDate与客户端的时间戳相比,使用 将提供很少的好处。

于 2017-07-27T19:27:03.883 回答