如何使用 MongoDB 和 Spring 实现软(逻辑)删除?

Kaa*_*rde 4 java spring mongodb

我有带有 MongoDB 的 Spring Web 应用程序。目前我总是从数据库中永久删除数据。

@Repository
public class SessionRepository extends CrudRepository implements SessionService {
  ...
  @Override
  public void insert(Session session) {
    saveRoom(session);
    getTemplate().insert(session);
  }

  @Override
  public void delete(Session session) {
    getTemplate().remove(session);
  }
  ...    
}
Run Code Online (Sandbox Code Playgroud)

将其更改为软删除的好方法是什么?

----------------- 编辑 1 -------------------

我现在明白我应该做什么的逻辑了,感谢 Sarath Nair。但我不确定如何在 Spring 中实现这一点。我有一个 Session 对象:

@Document(collection = "session")
public class Session {

  @Id
  private String id;
  private Date startDate;
  private Date endDate;
//I just put this here
  private boolean deleted = false;

  public boolean isDeleted() {
    return deleted;
  }

  public void setDeleted(boolean deleted) {
    this.deleted = deleted;
  }

  ...
}
Run Code Online (Sandbox Code Playgroud)

我希望该字段boolean isDeleted出现在数据库中,但我不想通过 Web 服务将该信息发送出去。 @Transient不好,因为该字段不会出现在数据库中,也不会出现在 HTTP 响应中。现在我正在发送deleted: false我的 HTTP 响应。

我应该如何编辑我的 Session 类?

Sar*_*air 7

is_deleted在集合中有一个额外的字段。插入is_deletedfalse新文档。当您删除时,只需将此值更新为该true文档。每当您需要从集合中读取文档时,请为集合传递is_deleted : false