0

MongoDBにMap関数があり、後でReduceを使用しています。多数のユーザーが含まれているコレクションを使用しており、ユーザーはいくつかのチャネルを所有しています。ただし、チャネルを持たないユーザーがいて、Map/Reduce関数によってスクリプトでエラーが発生します。

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

関数を終了し続ける代わりにreturnを使用すると、ループを終了したくないことを除いて、問題なく機能します。これを回避する賢い方法はありますか?

あなたのアドバイスとより良い知恵に感謝します。

4

1 に答える 1

0

returnfromの場合、このドキュメントのmapfromのみが返されます。mapそれとは関係なく、他のドキュメントのマップが実行されます。

mapこのフォームに書き直すことをお勧めします

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

この形の方が明確だと思います。チャネルを持っているユーザーには何かを出力し、チャネルを持っていないユーザーにはスキップします。

于 2012-07-30T14:47:25.123 に答える