2016-08-15 12 views
0

で私がNoSQLの中に最初のステップを作り、次の質問持っています:のMongoDB - 選択のコレクションとインデックス列

は、私たちが「employeeNumberが」という名前のフィールドに、データベース内のいくつかのコレクションを持っていると言います。

このフィールドを持つすべてのコレクション名とこの列を使用しているすべてのインデックス名を選択するスクリプトを作成するにはどうすればよいですか?

+2

:よう

あなたがそれを望んでいた場合は、になります。 ColumはSQLのプロパティです。 Mongodbはさまざまなスキーマを持つドキュメントを格納します。 – user2647513

+0

申し訳ありませんが、私はフィールドを意味します。投稿が修正されました。 – user306080

+1

すべてのコレクションを繰り返し処理し、探しているものをそれぞれチェックします。ここにDoc:https://docs.mongodb.com/manual/reference/method/ – JohnnyHK

答えて

2

短い回答:できません。

コレクションにはスキーマがないため、コレクションにすべてEmployeeNumberのレコードが含まれているかどうかを確認できますが、それは恐ろしいものです。 MongoDBの列を持っていない

function findCollectionsWithEmployeeNumber(cb){ 
    var collectionsWithEmployeeNumber = []; 
    var collectionsToCheck = {}; 
    db.collectionNames(function(err, collections){ 
     collections.forEach(function(c){collectionsToCheck[c]=false}); 
     if(err) { 
      throw err; 
     } 
     collections.forEach(function(collection){ 
      db[collection].findOne({EmployeeNumber : {$exists :true}}, function(err, res){ 
       if(res) { 
        collectionsWithEmployeeNumber.push(collection); 
       } 
       collectionsToCheck[collection] = true; 
       var allChecked = collectionsToCheck.reduce(function(previous, current){return previous && current}, true) 
       if(allChecked) { 
        cb(collectionsWithEmployeeNumber); 
       } 
      }) 
     }); 
    }); 
} 
+1

興味深い答え:1.することはできません。 2.そうですね、それは恐ろしいでしょう。 3.さて、私はあなたのためにそれを書きましょう。 :-) – JohnnyHK

関連する問題