次のように構成されたドキュメントのコレクションがあるとします。
{ username: "jones",
likes: 20,
text: "Hello world!"
}
さらに、構築しているアプリケーションが、ユーザーごとのいいねの総数に関する統計を表示する必要があると想定します。Mongodbのドキュメントは、次のようなMap/Reduce関数を使用してこれを実現できることを示しています。
function() {
emit( this.username, {count: 1, likes: this.likes} );
}
ただし、データベースに新しいドキュメントを挿入するたびに「いいね」カウンターをインクリメントする方が直感的です。これには、Map/Reduceのようにコレクション全体をトラバースする必要はありません。次回Map/Reduceプロセスが実行されるときではなく、すぐにカウンターを更新します。そして、アーキテクチャはより単純に見えます。
Map / Reduce関数がより良いソリューションである理由を誰かが答えで説明できますか?