コレクションのインデックスを作成するには(ここに記載されているように https://docs.spring.io/spring-data/mongodb/docs/current/reference/html/ )、次のようなものを使用できます:
mongoTemplate.indexOps(Person.class).ensureIndex(new Index().on("name",Order.ASCENDING));
しかし、プログラムのどこにこのコードスニペットを配置する必要がありますか?
関連するリポジトリのコンストラクタで?今はそんな風にやっていてうまくいきましたが、どういうわけかデザインが悪い気がします。
Mongo構成のどこか?ここでそれをオーバーライドするための適切な方法が見つかりません https://docs.spring.io/spring-data/mongodb/docs/current/api/org/springframework/data/mongodb/config/AbstractMongoConfiguration .html
プログラム的な方法でそれを行う必要がある場合は、新しいSpringの@Configurationを作成して、そのような初期化を実行できます。
@Configuration
@DependsOn("mongoTemplate")
public class CollectionsConfig {
@Autowired
private MongoTemplate mongoTemplate;
@PostConstruct
public void initIndexes() {
mongoTemplate.indexOps("collectionName") // collection name string or .class
.ensureIndex(
new Index().on("name", Sort.Direction.ASC)
);
}
}