要为集合创建索引(如本文https://docs.spring.io/spring-data/mongodb/docs/current/reference/html/所述),可以使用以下方法:

mongoTemplate.indexOps(Person.class).ensureIndex(new Index().on("name",Order.ASCENDING));

但是我应该把这个代码片段放在程序的什么地方呢?

在相关存储库的构造函数中?我现在就是这样做的,而且很管用,但不知怎么的,我觉得这是个糟糕的设计.

在Mongo配置的某个地方?我还没有找到一个合适的方法来覆盖它

推荐答案

如果需要以编程的方式进行,只需创建新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)
        );
    }
}

Mongodb相关问答推荐

MongoDB$unionWith,如何 Select 特定文档

MongoDB通过查找具有多个数组的对象进行聚合

MongoDB MQL,将列表一分为二,仅获取唯一值

MongoDB $lookup 查找字段值数组

发布到 MongoDB 时生成的附加id字段

使用Go的Mongo驱动程序,从MongoDB文档中获取元素并更新其值需要帮助

Mongo按最大分组排序

数组过滤器 MongoDB

从 PHP 打印 MongoDB 日期

声明多个模式后无法从数据库中获取数据(mongoose + express + mongodb

MongoDB 的 Java 语法

嵌套在文档数组中的mongodb展开数组

什么是 mongodb 中的admin数据库?

嵌套数组内的Mongodb增量值

MEAN 堆栈文件上传

Mongo Schema-less集合和 C#

在 MongoDB 中插入或更新许多文档

移动 MongoDB 的数据文件夹?

MongoDB InsertMany 与 BulkWrite

即使重新安装后,Mongo 仍在等待 27017