Spring boot mongo db索引(unique = true)不起作用

Sum*_*dha 9 mongodb spring-data-mongodb spring-boot

我有以下课程作为我的文档。

@Data
@Builder
@Document(collection = "test")
public class TestData {
    @Id
    private String id;

    private String name;

    @Indexed(unique = true)
    private String hash;

}
Run Code Online (Sandbox Code Playgroud)

即使我使用启用了唯一性的索引,我也可以将重复文档插入到集合中。但如果我在 mongo shell 中生成索引,那么它就可以工作。

有什么方法可以仅通过代码指定唯一索引吗?

Raj*_*uka 3

这就是我的代码中使用复合索引的方式

@Getter
@Setter
@Document
@CompoundIndexes({
@CompoundIndex(name = "name_author_idx", def = "{'name' : 1, 'author' : 1}", unique = true, background = true)})
public class Book implements Transformer {

    @Id
    private String id;

    @Field(name = "name")
    private String name;

    @Field(name = "author")
    private String author;

    @Field(name = "qty")
    private Integer qty;

    @Field(name = "price")
    private Double price;

    @Field(name = "created_time")
    private LocalDateTime createdTime = LocalDateTime.now();
}
Run Code Online (Sandbox Code Playgroud)