如何在Map(/ Reduce)函数中继续循环?

时间:2012-07-30 14:39:55

标签: mongodb mapreduce

我在MongoDB中有一个Map函数,我稍后使用Reduce。我使用的是一个拥有大量用户的集合,用户拥有一些频道。但是,有些用户没有任何通道,Map / Reduce功能会在我的脚本中引发错误。

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

当我使用return而不是继续退出该函数时,它可以完美地工作,除了我不想结束循环。这有什么聪明的方法吗?

感谢您的建议和更好的widsom。

1 个答案:

答案 0 :(得分:0)

如果return来自map,则仅从map返回此文档。无论如何,都将执行其他文件的地图。

我建议您将map重写为此表单

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

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