mongodb中mapreduce实例
类别:数据库 浏览量:1984
时间:2014-5-24 mongodb中mapreduce实例
mongodb中mapreduce实例一、MapReduce介绍
MongoDB中MapReduce相当于group功能,使用MapReduce要实现两个函数 Map Function 和 Reduce Function
在调用mapReduce时需要用到这两个函数。
1、MapReduce定义
db.things.mapReduce(Map Function, Reduce Function, [output | option])
2、MapReduce实例
实例数据:
> db.sdk_counter.find();
{ "_id" : ObjectId("53395c10cb8d5d3a6b878f01"), "stat_date" : "2014-03-25", "show_count" : 4, "click_count" : 0 }
{ "_id" : ObjectId("53395c14cb8d5d3a6b878f02"), "stat_date" : "2014-03-23", "show_count" : 4, "click_count" : 0 }
{ "_id" : ObjectId("53395c1ccb8d5d3a6b878f03"), "stat_date" : "2014-03-24", "show_count" : 4, "click_count" : 10 }
{ "_id" : ObjectId("53395c23cb8d5d3a6b878f04"), "stat_date" : "2014-03-24", "show_count" : 3, "click_count" : 1 }
3、字段含义:
stat_date:日期
show_count:展示量
click_count:点击量
二、实现功能:分年、分月、分日期、分年和月查看展示量和点击量
var m = function(){
var year = this.stat_date.substr(0,4);
var month = this.stat_date.substr(5,2);
var day = this.stat_date.substr(8,2);
var yearAndMonth = this.stat_date.substr(0,7);
//此处填写year/month/day/yearAndMonth即可以实现功能
emit(yearAndMonth,{show_count:this.show_count,click_count:this.click_count});
};
var r = function(key,values){
var show = 0;
var click = 0;
for(var i in values){
show += values[i].show_count;
click += values[i].click_count;
}
return {"show_count":show,"click_count":click};
};
db.sdk_counter.mapReduce(m,r,"sdk_counter_tmp");
db.sdk_counter_tmp.find();
--按月份
> db.sdk_counter_tmp.find();
{ "_id" : "03", "value" : { "show_count" : 15, "click_count" : 11 } }
--按年份
> db.sdk_counter_tmp.find();
{ "_id" : "2014", "value" : { "show_count" : 15, "click_count" : 11 } }
--按日期
> db.sdk_counter_tmp.find();
{ "_id" : "23", "value" : { "show_count" : 4, "click_count" : 0 } }
{ "_id" : "24", "value" : { "show_count" : 7, "click_count" : 11 } }
{ "_id" : "25", "value" : { "show_count" : 4, "click_count" : 0 } }
四、算总量
var m = function(){emit(1,{show_count:this.show_count,click_count:this.click_count})};
var r = function(key,values){
var show = 0;
var click = 0;
for(var i in values){
show += values[i].show_count;
click += values[i].click_count;
}
return {"show_count":show,"click_count":click};
};
db.sdk_counter.mapReduce(m,r,"sdk_counter_tmp");
db.sdk_counter_tmp.find();
> db.imacha_sdk_counter_tmp.find();
{ "_id" : 1, "value" : { "show_count" : 15, "click_count" : 11 } }
五、mapreduce总结
mongo使用mapreduce实现类似关系数据库中分组统计的需求,关键是找对分组key,而其map中的emit函数的key参数至关重要,它是字段值而不是字段!
您可能感兴趣
- MongoDB 日志文件太大
- MongoDB优化器profile
- MongoDB聚合函数
- Mongodb数据导入导出
- mongodb查询
- mongodb连接池
- mongodb python教程(python使用pymongo操作mongo的完整步骤)
- mongodb用户权限
- mongodb 分页查询
- java连接mongodb(Docker连接mongodb实现过程及代码案例)
- MongoDB的where查询
- mongodb容器化部署映射端口访问(Docker 部署 MongoDB容器的方法)
- MongoDB命令与SQL语法对比
- python直接查询mongodb(pymongo中聚合查询的使用方法)
- mongodb常用命令的语法
- mongodb中mapreduce实例
- 中国留学生都是富二代吗()
- 我们现在吃的苹果是哪里来的 原来现代苹果引入中国仅有一百多年(我们现在吃的苹果是哪里来的)
- 买绿宝不能只挑黄绿色 菜农教你3招挑,个个皮薄肉脆,香甜爆汁(买绿宝不能只挑黄绿色)
- 大果肉搭配薄瓜皮, 绿宝 脆甜爽口,不愧是甜瓜中的 佼佼者(大果肉搭配薄瓜皮)
- 河南尉氏县因地制宜发展果蔬种植 水坡镇绿宝甜瓜变 金瓜(河南尉氏县因地制宜发展果蔬种植)
- 谢广坤,你这么欺负谢腾飞,良心不会痛吗(你这么欺负谢腾飞)
热门推荐
- eval在python里面什么意思(python 为什么说eval要慎用)
- python有哪几种赋值(关于python多重赋值的小问题)
- dedecms投稿页面(dedecms artlist读取全站最新文章的代码)
- php可忽略大小写的模式符(PHP基于timestamp和nonce实现的防止重放攻击方案分析)
- kubernetes 虚拟机安装(VirtualBox+Ubuntu16搭建Kubernetes集群的实现)
- vps云服务怎么做(vps云主机的基础认识)
- mysql语句详解(详解记录MySQL中lower_case_table_names的坑)
- css3 图片样式处理(CSS3实现漂亮的照片墙效果的简单实例推荐)
- pythonlambda详解(Python的条件表达式和lambda表达式实例)
- phpcurl请求能在日志里记录吗(php使用curl模拟多线程实现批处理功能示例)