MongoDB - 使用Spring Data创建复合唯一索引无效

3
我正在尝试使用Spring Data在MongoDB中创建唯一的复合索引。
但是我发现索引被创建,并且数据库中创建了重复的文档

我的实体类:

@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上创建,而实体类中定义的索引未被创建。

enter image description here

这是一个Spring Data中的bug还是我做错了什么?
附注:在运行应用程序之前,我也尝试删除了集合,但没有帮助。
2个回答

1
从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());

1
如 @Saxon 所提到的:

Spring Data MongoDB 3.0,默认情况下关闭自动索引创建。

我可以通过在 application.properties 中添加 Spring 数据配置来创建索引,而无需添加代码。

spring.data.mongodb.auto-index-creation=true

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接