日期:2014-05-16  浏览次数:20508 次

MongoDB mapreduce实例
  1. /**************?The?file?is?executed?per?5?minutes?by?/etc/crontab.*****************/??
  2. var?action_count_map?=?function(){??
  3. ??emit(this.action,?{action:this.action,?count:1});??
  4. }??
  5. ??
  6. var?action_count_reduce?=?function(key,?values){??
  7. ??var?count?=?0;??
  8. ??values.forEach(function(value){??
  9. ????count?+=?value.count;??
  10. ??});??
  11. ??return?{action:key,?count?:?count};??
  12. }??
  13. ??
  14. ??
  15. db.log.mapReduce(action_count_map,?action_count_reduce,?{query?:?{'action_count'?:?{$ne:1}},out:?{reduce:'action_count'}});??
  16. ??
  17. db.log.update({'action_count':{$ne:1}},?{$set:{'action_count':1}},?false,?true); ?

1. 在map中将每个action访问次数设为1

2. reduce中,统计相同action的访问次数

3. 执行mapReduce。指定了查询为‘action_count’不等于1,也就是没有执行过该统计;将结果存储在‘action_count’集合,并且使用reduce选项表示该结果集作为下次reduce的输入。

4. 在当前所有日志记录设置'action_count'的值为1,表示已经执行过该统计????

?

##############################################################

MongoDB MapReduce

M