Spring数据:MongoDB文档中的唯一字段

Spring数据:MongoDB文档中的唯一字段,mongodb,spring-data,Mongodb,Spring Data,假设我有以下数据库实体: @Document(collection = "users") public class User { @Id private String id; private String firstname; private String lastname; private String email; } 如何强制字段电子邮件是唯一的?这意味着当应用程序试图保存实体时,MongoDB应该检查是否已经存在具有此电子邮件地址的用

假设我有以下数据库实体:

@Document(collection = "users")
public class User {

    @Id
    private String id;

    private String firstname;

    private String lastname;

    private String email; 

}
如何强制字段电子邮件是唯一的?这意味着当应用程序试图保存实体时,MongoDB应该检查是否已经存在具有此电子邮件地址的用户记录

问候,,
Steffen

Mongodb需要创建一个字段并为其编制索引,以了解该字段是否唯一

@Indexed(unique=true)
private String email;

首先,使用模型中字段上方的
索引
注释,如下所示:

@Indexed(unique = true)
private String email;
此外,还应该以编程方式定义索引。定义
MongoTemplate
时,应使用以下代码

mongoTemplate.indexOps("YOUR_COLLECTION_NAME").ensureIndex(new Index("YOUR_FEILD_OF_COLLECTION", Direction.ASC).unique());
对于您的情况,您应该使用:

mongoTemplate.indexOps("users").ensureIndex(new Index("email", Direction.ASC).unique());

@索引(unique=true),所以它只能与@Indexed结合使用?我试过了,mongo驱动程序没有执行任何强制操作unique@David:您是否也在mongo端创建了索引?如果所有工作都在
mongoTemplate上完成,为什么我们需要使用注释?