StS*_*Sch 10 java spring mongodb spring-data
假设我有以下数据库实体:
@Document(collection = "users")
public class User {
@Id
private String id;
private String firstname;
private String lastname;
private String email;
}
Run Code Online (Sandbox Code Playgroud)
如何强制字段电子邮件是唯一的?这意味着当应用程序尝试保存实体时,MongoDB 应该检查具有此电子邮件地址的用户记录是否已经存在。
问候, 史蒂芬
V.A*_*wal 11
Mongodb 需要创建和索引一个字段,以便知道该字段是否唯一。
@Indexed(unique=true)
private String email;
Run Code Online (Sandbox Code Playgroud)
Indexed首先,在模型中使用字段上方的注释,如下所示:
@Indexed(unique = true)
private String email;
Run Code Online (Sandbox Code Playgroud)
另外,您应该以编程方式定义索引。定义您的MongoTemplate.
mongoTemplate.indexOps("YOUR_COLLECTION_NAME").ensureIndex(new Index("YOUR_FEILD_OF_COLLECTION", Direction.ASC).unique());
Run Code Online (Sandbox Code Playgroud)
对于您的情况,您应该使用:
mongoTemplate.indexOps("users").ensureIndex(new Index("email", Direction.ASC).unique());
Run Code Online (Sandbox Code Playgroud)
小智 9
这对我有用,但是您必须删除数据库,然后重新运行您的应用程序
spring.data.mongodb.auto-index-creation=true
Run Code Online (Sandbox Code Playgroud)
从 Spring Data MongoDB 3.0 开始,自动索引创建默认是关闭的。所以基本上,除了使用 之外@Indexed,您还必须配置默认索引选项。您需要做的就是spring.data.mongodb.auto-index-creation=true在application.properties文件中进行制作,然后@Indexed就会像魅力一样工作!
| 归档时间: |
|
| 查看次数: |
13299 次 |
| 最近记录: |