2017-03-31 9 views
2

私はdb.collection.getIndexes()を実行する方法があることを知っています。これは、コレクションに対して定義されたすべてのインデックスをリストします。それらのインデックス定義を別のコレクションにコピーして作成する方法はありますか?MongoDBあるコレクションから別のコレクションへインデックス定義をコピーする方法は?

多くのものがあり、私はそれらを1つずつ実行したくありません。

重複した質問のコメントについて:私はコレクションをコピーしたくありません。インデックスを別のコレクションに適用できる形式でエクスポートしたいと考えています。例えば

+0

[MongoDBのあるデータベースから別のデータベースへのコレクションのコピー方法](http://stackoverflow.com/questions/11554762/how-to-copy-a-collection-from-docs/)一つのデータベースから別のデータベースへ) – helmy

答えて

4

私はその後、私はusertestと呼ばれる別のコレクションを持っている1既存のユーザーインデックス付きコレクション_ID_NAME_1EMAIL_1WEBSITE_1

を持って、私はインデックスをコピーしますユーザーコレクションからユーザーテストコレクション。次のコマンドは、このシナリオのために働く:

  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

私が知る限り、このようなパラメータはありません。インデックスオプションをコピーするようにコードを更新しました。それがあなたに役立つことを願っています。 –

関連する問題