我正在尝试将一个mongo集合的索引复制到另一个数据库中的另一个集合。在Java上最好的解决方案是什么?
我使用MongoTemplate来执行mongo操作,这就是我如何从原始集合中获取索引的方法:
MongoCollection<Document> srcCollection = srcMongoTemplate.getCollection(collectionName);
ListIndexesIterable<Document> indexesList = srcCollection.listIndexes();
但是我应该如何使用检索到的'indexesList'对象在另一个集合中创建相同的索引呢?
我假设我必须使用类似的东西,但是我不明白到底要传递什么参数到createIndexes方法中。
ListIndexesIterable<Document> indexes = srcCollection.listIndexes();
dstCollection.createIndexes(???);
1条答案
按热度按时间wlsrxk511#
为了解决这个问题,我创建了一个开源库
mongo-index-copy
。它使用MongoDB Java Driver中的listIndexes
和createIndexes
方法将索引从一个集合复制到另一个集合。使用这个库,您可以将所有索引从一个集合复制到另一个集合,或者指定要复制的索引的名称。mongo-index-copy
首先从源集合中获取Document
对象形式的索引定义。然后,它将这些Document
对象Map到有效的IndexModel
对象(也Map了所有可能的IndexOptions
)。最后,mongo-index-copy
使用先前创建的IndexModel
对象在目标集合上创建这些索引。要使用它,您可以使用Maven / Gradle将
mongo-index-copy
导入到您的项目中,并调用适当的MongoIndexCopy
方法,如下例所示: