必要な統計情報を取得するmapreduceアルゴリズムの作成に問題があります。投稿を作成できるユーザーオブジェクトがあり、投稿には他のユーザーからのいいねがたくさんあります。
ユーザー
-投稿
----いいね
ユーザーコンテキストだけでなく、投稿に個別にアクセスするため、投稿はユーザーに埋め込まれません。私が必要とする統計は、著者が取得したいいねの数であり、ユーザーの投稿のいいねを介してこれを取得する必要があります。問題は、投稿が埋め込まれていないため、マップ関数でそれらにアクセスできないことです。これが私が現在持っているマップとリデュース機能です
def reputation_map
<<-MAP
function() {
var posts = db.posts.find({user_id:this._id});
emit(this._id, {posts:posts});
}
MAP
end
def reputation_reduce
<<-REDUCE
function(key, values) {
var count = 0;
while(values.hasNext()){
values.next();
count+=1;
}
return {posts:count};
}
REDUCE
end
これは各ユーザーの投稿のみを返すはずなので、まだいいねレベルに到達していませんが、カウントの代わりに、投稿のdbqueryのみを返します。これを行う正しい方法は何ですか?