2012-07-30 33 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); 
    }); 
    } 
} 

我认为,这种形式更清晰。它会为拥有频道的用户发射一些内容,并跳过那些没有频道的用户。