web-dev-qa-db-ja.com

Spring Data MongoDB-Mongoコレクションのインデックスをプログラムで作成する場所はどこですか?

コレクションのインデックスを作成するには(ここに記載されているように 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

13
Maxim

プログラム的な方法でそれを行う必要がある場合は、新しい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)
        );
    }
}
12
Dawid