@CompoundIndex在Spring Data MongoDB中不起作用

时间:2015-06-11 07:30:45

标签: java spring mongodb indexing spring-data-mongodb

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

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

}

但是,未创建索引。我也尝试将@CompoundIndex直接放在课堂上方。该集合仍然缺少索引。当像这样创建时,相同的索引定义工作正常:

mongoTemplate.indexOps(MyModel.class).ensureIndex(new Index().named("name_").on("tenantId", Direction.ASC).on("name", Direction.ASC).unique());

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

2 个答案:

答案 0 :(得分:1)

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

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

或在application.yml中:

spring:
  data:
    mongodb:
      auto-index-creation: true

答案 1 :(得分:0)

在这种情况下,我宁愿选择mongodb createIndex 方法,因为它确保已创建索引,即使您在应用模型中创建了它们(在本例中为Spring引导)它也是如此。总是更好地进行双重检查并手动创建https://docs.mongodb.com/v3.2/reference/method/db.collection.createIndex/