mongodb - 使用 spring 数据的复合唯一索引不起作用

mongodb - compound unique index using spring data not working

我正在尝试使用 spring 数据在 mongodb 中创建唯一的复合索引。
但是我看到索引是 not 创建的并且 duplicate document 在数据库中创建。

我的实体class:

@Document
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
@CompoundIndexes(
        @CompoundIndex(name = "daybook_index", def = "{'date' : 1, 'vehicleNumber' : 1}", unique = true)
)
public class Daybook {

    private String date;
    private String vehicleNumber;
    private String unit;
}

我正在使用 repository.insert() 方法创建文档。

当我在 mongo express 中看到时,我只看到在 _id 上创建了一个索引,并且未创建在实体 class 中定义的索引。

是 spring 数据中的错误还是我做错了什么?

P.S.: 我也尝试在 运行 应用程序之前删除该集合,但没有帮助。

从 Spring Data MongoDB 3.0 开始,默认情况下自动创建索引是关闭的。 要打开它,您可以使用适当的标志覆盖 MongoConfigurationSupport 中的方法:

public class MongoConfiguration extends AbstractMongoClientConfiguration {
    .....
    @Override
    protected boolean autoIndexCreation() {
        return true;
    }
}

否则您可以使用适当的说明创建索引。

mongoOperations.indexOps(Daybook.class).ensureIndex(new Index().on("date", Direction.ASC).on("vehicleNumber", Direction.ASC).unique());

正如@Saxon 提到的:

Spring Data MongoDB 3.0, automatic index creation is turned off by default.

我可以通过在 application.properties

中添加 spring 数据配置来创建索引,而不是添加代码
spring.data.mongodb.auto-index-creation=true