提问者:小点点

莫菲亚支持自动时间戳吗?


有没有人知道在其创建/修改操作过程中,莫菲亚是否支持在mongoDB中创建/更新集合中的文档的自动时间戳。

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

谢了可悲


共2个答案

匿名用户

我通常使用一个基本实体,所有其他实体都对其进行了扩展。它提供了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();
}

匿名用户

如果这不是你要的确切答案,请提前道歉。但是简短的答案是不。

似乎没有API在最新的莫菲亚支持该操作。也许有一个bug打开来支持这一点。同时,你应该使用你最喜欢的构造函数java.util.Date或java. sql.Timestamp。

该源代码的莫菲亚有适当的转换器内置来处理这个TimestampConverter.java。

仅与此相关。如果您使用$当前日期的原因是为了避免多个主机之间的时钟偏差问题,那么您就走错了路。尽管$当前日期留档中没有明确说明,但据记录,MongoDB没有解决各种主机之间的时钟偏差问题。这可以在ObjectId. getTimestamp()的留档中找到。因此,与客户端的时间戳相比,使用$当前日期几乎没有什么好处。