我在MongoDB中有集合,我正在尝试使用Spring批注(@TextIndexed)生成文本索引。我不是在应用程序启动时创建数据库,而是已经创建了。
问题是-索引未添加到我的数据库中。
注释仅在启动应用程序后创建数据库时有效吗?
谢谢。
Spring v。4.3.2 MongoDB 4.0.1版
答案 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