我正在使用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());
我更喜欢使用索引的基于注释的定义。任何想法为什么这不起作用?
答案 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/