java - @CompoundIndex 在 Spring Data MongoDB 中不起作用

标签 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());

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

最佳答案

您需要在 application.properties 中添加以下内容:

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

或在 application.yml 中:

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

关于java - @CompoundIndex 在 Spring Data MongoDB 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30774376/

相关文章:

java - 如何使用 main() 中的对象数组访问类私有(private)成员?

java - 在 Tomcat7 上部署 webapp

eclipse - org.springframework.beans.factory.BeanCreationException : Error creating bean with name 'transactionManager

mongodb - 将 update 与 upsert 和 $all 一起使用

javascript - mongodb - 聚合 $match $in 和 $lookup 管道

java - 是否有任何与 PHP 的 http_build_query 函数等效的 Java?

java - 给定第一个元素的权重限制,获得对的第二个元素的最大总和

java - 在Spring中实现后台进程

node.js - mongoDB 中的多个 $group

java - 如何使用junit中的属性文件测试参数