2017-03-31 84 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

據我所知,沒有這樣的參數。我更新了我的代碼以複製索引選項。希望對你有所幫助。 –

相關問題