2016-08-15 179 views
0

選擇收藏和索引我正在在NoSQL的第一步驟,有以下問題:MongoDB的 - 通過

說我們有在名爲「EmployeeNumber」領域的數據庫中的幾個集合。

我該如何編寫一個腳本來選擇所有具有此字段的集合名稱以及所有使用此列的索引名稱?

+2

MongoDB中沒有列。 Colums是SQL的一個屬性。 Mongodb存儲具有不同模式的文檔。 – user2647513

+0

對不起,我的意思是田野。修正了帖子。 – user306080

+1

迭代所有集合並檢查每個集合以查找所需的集合。 Doc這裏:https://docs.mongodb.com/manual/reference/method/ – JohnnyHK

回答

2

簡答:你不能。

集合沒有Schema,因此您可以檢查所有集合以查看它們是否包含屬性爲EmployeeNumber的記錄,但那樣會很糟糕。

如果你想它會看起來像:

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.你不能。好吧,你可以但它會很糟糕。好的,讓我爲你寫。 :-) – JohnnyHK