【发布时间】:2021-07-21 18:48:55
【问题描述】:
我在我的项目中使用 Java Spring Boot 和 MongoDB 存储库。我需要在 MongoDB 中保存和更新文档。
可以通过 CrudRepository 接口中的save() 方法在 MongoDB 中保存或更新文档。正如我从文档 MongoDB 机制中了解的那样,查找具有相同 id 的文档并更新它以防万一找到具有相同 id 的文档
或保存以防万一找不到。
就我而言,我需要自定义此行为并保存或更新新文档,而不是根据 id 字段而是根据 email 字段。如果存在具有相同电子邮件的文档,则应对其进行更新,如果不存在,则应将其另存为新文档。
以下是文档示例:
@Document("User")
@Data
public class User {
@Id
private String id = "abc123";
private String email = "john@gmail.com";
private String password = "some_hashed_password";
private String name John Johnson;
}
我如何尝试保存/更新它:
User user = userRepository.save(user);
所以我希望如果用户集合中存在电子邮件“john@gmail.com”的用户,文档将被更新,如果用户集合文档的电子邮件“john@gmail.com”不存在它将创建一个。
是否可以根据我的需要自定义保存/更新行为,以便根据电子邮件更新或保存文档 字段,以及如何实现?
【问题讨论】:
标签: java spring mongodb jpa spring-data-mongodb