2017-03-31 82 views
2

我知道有一种方法可以做db.collection.getIndexes()这将列出为集合定义的所有索引。有没有办法将这些索引定义复制并创建到另一个集合?MongoDB如何将索引定义从一个集合复制到另一个集合?

有很多,我不想一个接一个做。

关于重复的问题评论:我不想复制一个集合。我希望以可以应用于其他集合的格式导出索引。

+0

可能的重复[如何将一个集合从一个数据库复制到另一个MongoDB中](http://stackoverflow.com/questions/11554762/how-to-copy-a-collection-from- one-database-to-another-in-mongodb) – helmy

回答

4

,比如我有一个现有用户收集与指标_id_NAME_1EMAIL_1WEBSITE_1

然后我有另一个集合称为usertest,我想复制指标从用户收集到usertest收集。以下命令适用于这样的场景:

  1. 都复制索引键和指数期权

    var indexes = db.user.getIndexes(); 
    
    indexes.forEach(function(index){ 
        delete index.v; 
        delete index.ns; 
    
        var options = []; 
        for (var option in index) { 
         if (option != 'key') { 
          options.push(index['option']); 
         } 
        } 
        db.usertest.createIndex(index.key, options); 
    }); 
    
  2. 只有

    复制索引键(批处理)

    var indexKeys = db.user.getIndexKeys(); 
    db.usertest.createIndexes(indexKeys); 
    

希望这将会有所帮助。这里的文档:createIndexes

+0

我看到了那个db.collection.getIndexKeys()方法。我立即看到的问题是,它没有列出索引的选项,对吗? 因此,用户集合上的唯一索引在usertest集合上将不唯一:/ – fullmooninu

+0

您知道要传递给getIndexKeys()方法的任何参数,因此它返回索引选项?我无法在文档上找到该方法。 – fullmooninu

+1

据我所知,没有这样的参数。我更新了我的代码以复制索引选项。希望对你有所帮助。 –

相关问题