Spring 数据 MongoDB - 在何处以编程方式为 Mongo 集合创建索引?
Spring Data MongoDB - Where to create an index programmatically for a Mongo collection?
要为集合创建索引(如此处记录 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)
);
}
}
要为集合创建索引(如此处记录 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)
);
}
}