【发布时间】:2017-07-19 08:42:03
【问题描述】:
我想为文档的每次更新更新 MongoDB 中的 update_at 属性,以便稍后我可以根据最后一个 update_at 归档来检索文档。对于这种情况,我遇到了两种方法。
-
在每个 DAO 调用中更新 update_at,例如
public void updateMemberDetails(Long memberId, Sring email) { UpdateOperations<Member> ops = getDs().createUpdateOperations(Member.class); Query<Member> query = basicQuery(memberId); ops.set("email", email); ops.set("update_at", new Date()); getDs().update(query, ops); } -
其他方式是在模型中调用Mongo的生命周期方法(http://mongodb.github.io/morphia/1.4/guides/lifeCycleMethods/)
@PrePersist public void prePersist() { update_at = new Date(); }
问题:-
方法 1 工作得很好,但方法 1 的唯一缺点是我必须在每个我不想在每个方法中更新的 DAO 更新方法中添加ops.set("update_at", new Date());。
在方法 2 prePersist() 中仅在 operation db.save() 中调用的方法中,在 db.update() 操作中不调用 prePersist() 方法。因此,当 DAO 方法调用 db.update() 时,我无法更新日期。
【问题讨论】:
标签: java mongodb playframework morphia database