MongoDB到Cosmos DB索引DB迁移

MongoDB到Cosmos DB索引DB迁移,mongodb,azure-cosmosdb,Mongodb,Azure Cosmosdb,有没有办法自动将索引从MongoDB迁移到Cosmos DB?我曾读到,人们必须手工完成,但不可能使用工具或脚本来完成吗?或者任何可以阅读的资源。我有大约200个集合需要迁移,其中包含多个索引,手动迁移需要花费大量时间您可以执行一些操作,如导出所有创建索引命令,然后在新数据库中执行这些命令,如所述 循环遍历所有集合,并为每个集合构造一个run命令。复制打印的命令并在新数据库中执行这些命令 var database = ‘my_new_db' // SHOULD ALWAYS MATCH DEST

有没有办法自动将索引从MongoDB迁移到Cosmos DB?我曾读到,人们必须手工完成,但不可能使用工具或脚本来完成吗?或者任何可以阅读的资源。我有大约200个集合需要迁移,其中包含多个索引,手动迁移需要花费大量时间

您可以执行一些操作,如导出所有创建索引命令,然后在新数据库中执行这些命令,如所述

循环遍历所有集合,并为每个集合构造一个run命令。复制打印的命令并在新数据库中执行这些命令

var database = ‘my_new_db' // SHOULD ALWAYS MATCH DESTINATION DB NAME
db.getCollectionNames().forEach(function(collection){    
    var command = {}
    var indexes = []    
    idxs = db.getCollection(collection).getIndexes()        
    if(idxs.length>1){
        idxs.forEach(function(idoc){
            if(idoc.name!='_id_'){
                var ns = database+"."+idoc.ns.substr(idoc.ns.indexOf('.') + 1 )
                idoc.ns = ns
                indexes.push(idoc)
            }
        })        
        command['createIndexes'] = collection
        command['indexes'] = indexes         
        print('db.runCommand(')
        printjson(command)     
        print(')')
    }
})
需要注意的是,只有在集合为空时才能创建唯一索引。就像我说的:

Azure数据库迁移服务自动迁移MongoDB 具有唯一索引的集合。但是,必须指定唯一索引 在迁移之前创建。Azure Cosmos DB不支持 当数据库中已有数据时,创建唯一索引 收藏。有关更多信息,请参阅Azure Cosmos DB中的唯一密钥

当然有可能。请阅读shell命令或文档,以获得所选语言的确切驱动程序。我发现可能会对您有所帮助。它做了一些事情,比如导出所有创建索引的命令,然后在新数据库中执行这些命令。但请注意,在cosmosdb mongo api中,只有当。但也表示迁移将支持在集合中迁移唯一索引。