2012-07-30 117 views
0

我在MongoDB中有一個Map函數,我稍後使用Reduce。我使用一個集合,其中有一堆用戶,用戶擁有一些頻道。但是,有些用戶沒有任何頻道,而Map/Reduce功能會在腳本中產生錯誤。如何在Map(/ Reduce)函數中繼續循環?

 map = Code("function() {" 
       " if(!this.channels) continue;" 
       " this.channels.forEach(function(z) {" 
       "  emit(z, 1);" 
       " });" 
       "}") 

當我使用返回,而不是繼續退出它完美的作品,只是我不想結束循環的功能。有沒有什麼聰明的方法呢?

感謝您的建議和更好的widsom。

回答

0

如果您returnmap,它僅從本文檔的map返回。無論如何,其他文檔的地圖都將被執行。

我建議你重寫到map這種形式

function() { 
    if(this.channels) { 
    this.channels.forEach(function(z) { 
     emit(z, 1); 
    }); 
    } 
} 

我認爲,這種形式更清晰。它會爲擁有頻道的用戶發射一些內容,並跳過那些沒有頻道的用戶。