- /**************?The?file?is?executed?per?5?minutes?by?/etc/crontab.*****************/??
- var?action_count_map?=?function(){??
- ??emit(this.action,?{action:this.action,?count:1});??
- }??
- ??
- var?action_count_reduce?=?function(key,?values){??
- ??var?count?=?0;??
- ??values.forEach(function(value){??
- ????count?+=?value.count;??
- ??});??
- ??return?{action:key,?count?:?count};??
- }??
- ??
- ??
- db.log.mapReduce(action_count_map,?action_count_reduce,?{query?:?{'action_count'?:?{$ne:1}},out:?{reduce:'action_count'}});??
- ??
- 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,表示已经执行过该统计????
?
##############################################################