我正在使用Spring Data MongoDB开发应用程序。我想在我的一个模型上创建一个复合索引。我在顶部添加了@CompoundIndex注释,如下所示:

@Document
@CompoundIndexes({
    @CompoundIndex(name = "name_", def = "{ 'tenantId': 1, 'name': 1 }", unique = true)
})
public class MyModel {

}

但是,未创建索引。我也尝试直接将@CompoundIndex放在类(class)上方。集合仍缺少索引。像这样创建时,相同的索引定义可以正常工作:
mongoTemplate.indexOps(MyModel.class).ensureIndex(new Index().named("name_").on("tenantId", Direction.ASC).on("name", Direction.ASC).unique());

我更喜欢使用基于注释的索引定义。任何想法为什么这不起作用?

最佳答案

您需要将以下内容添加到application.properties:

spring.data.mongodb.auto-index-creation=true
application.yml中:
spring:
  data:
    mongodb:
      auto-index-creation: true

10-05 17:54