Java Spring MongoDB @TextIndexed注释未在现有数据库中创建索引

时间:2018-09-03 08:55:23

标签: java spring mongodb annotations

我在MongoDB中有集合,我正在尝试使用Spring批注(@TextIndexed)生成文本索引。我不是在应用程序启动时创建数据库,而是已经创建了。

问题是-索引未添加到我的数据库中。

注释仅在启动应用程序后创建数据库时有效吗?

谢谢。

Spring v。4.3.2 MongoDB 4.0.1版

2 个答案:

答案 0 :(得分:1)

注释仅在启动应用程序后创建数据库时有效吗”?

答案是肯定的。

如果已经创建了集合,那么Spring数据不会初始化索引。 我不得不做类似您想做的事情,而我发现的唯一解决方案是使用MongoOperations实例来做。

  @Autowired
  private MongoOperations mongoOps;

  @PostConstruct
  public void initializeIndexesInDb(){
    mongoOps.indexOps(YourDocumentClass.class).ensureIndex(new Index().on("fieldName", Direction.ASC));
  }

答案 1 :(得分:1)

在最新版本中,您应该遵循

@Configuration
public class Config extends AbstractMongoClientConfiguration {

    @Override
    protected boolean autoIndexCreation() {
        return true;
    }
    // ...
}

https://github.com/spring-projects/spring-data-mongodb/pull/845