我在創建mapreduce算法時遇到問題,該算法將獲取我需要的統計信息。我有一個可以創建帖子的用戶對象,而其他用戶可以有很多喜歡的帖子。未嵌入子對象的MapReduce
用戶
--Post
----喜歡
崗位沒有嵌入用戶,因爲我們只是在用戶上下文分開,而不是訪問的職位。我需要的數據是作者獲得的喜歡數量,我需要通過用戶的帖子來獲得這個數字。問題是,因爲帖子沒有嵌入,我無法在我的地圖功能中訪問它們。這裏有地圖和減少功能,我現在有
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 。這樣做的正確方法是什麼?
按user_id計算點贊數(在Post中)。然後,如有必要,將這些user_ids映射到用戶(在單獨的查詢中)。 – 2012-04-13 15:43:44
我不確定如何在mapreduce中查詢它們,因爲它們沒有嵌入。 – Slick86 2012-04-13 15:56:10
對帖子進行map-reduce,而不是用戶。然後,在單獨的查詢中(不是map-reduce)獲取擴展用戶信息(如果需要)。 – 2012-04-13 15:58:08