使用Spring数据防止MongoDB中的重复(Spring Roo)

使用Spring数据防止MongoDB中的重复(Spring Roo),mongodb,spring-roo,spring-data-mongodb,Mongodb,Spring Roo,Spring Data Mongodb,由于Spring使用MongoDB,我一直在努力让自己的头脑专注于它,所以我决定在SpringRoo中启动一个小项目 在我的项目中,我将用户登录数据存储到MongoDB。问题是,注册过程创建了一个新的用户对象并将其存储在MongoDB中,尽管我在loginId字段上有@Unique,但它有创建重复对象的倾向 现在,我知道部分问题是我从JPA/RDBMS的角度考虑问题,MongoDB不是一个关系数据库,因此有一组不同的参数可供操作,但我很难在一个非常简单的示例代码中找到指导 首先,在从Spring

由于Spring使用MongoDB,我一直在努力让自己的头脑专注于它,所以我决定在SpringRoo中启动一个小项目

在我的项目中,我将用户登录数据存储到MongoDB。问题是,注册过程创建了一个新的用户对象并将其存储在MongoDB中,尽管我在loginId字段上有@Unique,但它有创建重复对象的倾向

现在,我知道部分问题是我从JPA/RDBMS的角度考虑问题,MongoDB不是一个关系数据库,因此有一组不同的参数可供操作,但我很难在一个非常简单的示例代码中找到指导


首先,在从Spring世界处理MongoDB时,哪些Spring/其他注释可用,更重要的是,哪些注释常用?第二,在处理需要“唯一”的文档时,通常是如何做到这一点的?您是否先搜索唯一字段以确保它不存在,然后再进行插入?第三,在JPALAND中,我可以使用注释@PrePersist和@PreUpdate来进行最后一分钟的数据操作,比如MD5散列已更新的密码,或者在存储之前添加/更新“上次修改”的日期。我知道这是JPA ISM,但我仍然可以使用它们吗?如果没有,是否有其他方法可用于Spring Data/MongoDB?

我最后在我的实体上使用了@Id注释,它指示哪个字段用作Id字段。只要字段是唯一的,写入后续更新将正确地替换现有实体,而不是添加新实体。

我创建了其他方法来检查是否存在与我们输入的数据值重复的数据。
如果它存在,我返回失败,指出存在重复值。否则它会保存新输入的值

,您可能会遇到与此海报相同的问题吗?如果可能的话,您可能需要索引该字段。否则,随着集合中文档数量的增加,性能将受到很大影响。