mongo聚合和mapreduce例子
聚合语句-比较集合内两字段大小
db.test.aggregate([
{$match:{"offlineTime":{$gt:ISODate("2016-09-13T01:54:55Z"), "$lt":ISODate("2016-09-13T10:05:55Z")},"logType":"off"}},
{$project:{updateTime:1,offlineTime:1,offTimeInc:{$add:['$offlineTime',1800000]},mac:1}},
{$project:{updateTime:1,offlineTime:1,offTimeInc:1,mac:1,eq:{$cond:[{$gt:['$updateTime','$offTimeInc']}, 1, 0]}}},
{$match:{eq:1}}
])
聚合条数语句
db.tableName.aggregate([
{$match:{"offlineTime":{$gt:ISODate("2016-09-13T01:54:55Z"), "$lt":ISODate("2016-09-13T10:05:55Z")},"logType":"off"}},
{$project:{updateTime:,offlineTime:,offTimeInc:{$add:['$offlineTime',]},mac:}},
{$project:{updateTime:,offlineTime:,offTimeInc:,mac:,eq:{$cond:[{$gt:['$updateTime','$offTimeInc']}, , ]}}},
{$match:{eq:}},
{$group:{_id:null, total:{$sum:}}}
])
简单聚合语句
db.test.aggregate( [
{ $match : { start:{$gte: , $lte: }, buildingId: , intfType:"uplink", utcCode:} },
{ $group: { _id: {buildingId:"$buildingId", mac:"$mac"}, rxtxByteTotal: { $sum: "$rxTxBytes" } } }
] );
简单的mapreduce
var map = function(){
emit({"buildingId" : this.buildingId , "mac" : this.mac , "utcCode" : this.utcCode}, {"wifiUpDown" : this.wifiUpDown , "activeTime" : this.activeTime });
} var reduce = function(key, values){
var wifi = ;
var activeTime = ;
values.forEach(function(val){
wifi += val.wifiUpDown;
activeTime += val.activeTime;
})
return {"wifi": wifi, "activeTime": activeTime};
}
db.test.mapReduce(map,reduce,{out:"mr2"})
上述为shell中直接执行的脚本。
使用spring-data-mongodb的版本:
String inCollectionName = "test";
String mapFunction = "function(){"
+ "emit({buildingId : this.buildingId , "
+ "mac : this.mac , utcCode : this.utcCode}, "
+ " {wifiUpDown : this.wifiUpDown , "
+ "activeTime : this.activeTime });}";
String reduceFunction = "function(key, values){ "
+ "var wifi = 0;"
+ "var activeTime = 0;"
+ "values.forEach(function(val){ "
+ "wifi += val.wifiUpDown;"
+ "activeTime += val.activeTime;"
+ " });"
+ " return {wifi: wifi, activeTime: activeTime};"
+ "}";
List<Test> result = new ArrayList<>();
mongo.mapReduce(inCollectionName, mapFunction, reduceFunction, Test.class).forEach(
data->result.add(data) );
result.forEach(data->System.out.println(JSON.toJSONString(data)));
带project的聚合例子
db.test.aggregate( [
{ $match : { day:} },
{ $group: { _id: {buildingId:"$buildingId", intfType:"$intfType", aggregatedTime:"$aggregatedTime", day:"$day"}
, rxTxBytes: { $sum: "$rxTxBytes" }
, rxBytes: {$sum: "$rxBytes"}
, txBytes: {$sum: "$txBytes"}
, rxPkts: {$sum: "$rxPkts"}
, txPkts: {$sum: "$txPkts"}
} },
{ $project:{"_id":, buildingId: "$_id.buildingId", intfType:"$_id.intfType", day:"$_id.day", rxBytes:, rxPkts:, txBytes:, txPkts:, aggregatedTime:"$_id.aggregatedTime", rxTxBytes:} }
] );
mongo聚合和mapreduce例子的更多相关文章
- windows下Eclipse操作MapReduce例子报错:Failed to set permissions of path: \tmp\hadoop-Jerome\mapred\staging\
windows下Eclipse操作MapReduce例子报错: 14/05/18 22:05:29 WARN util.NativeCodeLoader: Unable to load native- ...
- beetlex网关之聚合和url请求过虑
在这里主要介绍beetlex应用网关的两个插件,分别是聚合和url请求过虑.通过聚合插件可以把整合多个请求的数据来应答请求端,而Url请求过虑同可以拒绝一些有非常关键字的请求. 请求聚合 在网关服务中 ...
- Hadoop MapReduce例子-新版API多表连接Join之模仿订单配货
文章为作者原创,未经许可,禁止转载. -Sun Yat-sen University 冯兴伟 一. 项目简介: 电子商务的发展以及电商平台的多样化,类似于京东和天猫这种拥有过亿用户的在线购 ...
- 如何快速地编写和运行一个属于自己的 MapReduce 例子程序
大数据的时代, 到处张嘴闭嘴都是Hadoop, MapReduce, 不跟上时代怎么行? 可是对一个hadoop的新手, 写一个属于自己的MapReduce程序还是小有点难度的, 需要建立一个mave ...
- Hadoop 1.2.1 MapReduce 例子
自学hadoop真的很困难,主要是hadoop版本太混乱了,各个版本之间兼容性并不算太好.更主要的是网上的很多MapReduce的Java例子不写import!!!只写类名!!!偏偏Hadoop中有很 ...
- hadoop —— MapReduce例子 (数据去重)
参考:http://eric-gcm.iteye.com/blog/1807468 例子1: 概要:数据去重 描述:将file1.txt.file2.txt中的数据合并到一个文件中的同时去掉重复的内容 ...
- DDD中的聚合和UML中的聚合以及组合的关系
UML:聚合关系:成员对象是整体的一部分,但是成员对象可以脱离整体对象独立存在.如汽车(Car)与引擎(Engine).轮胎(Wheel).车灯(Light)之间的关系为聚合关系,引擎.轮胎.车灯可以 ...
- hadoop —— MapReduce例子 (求平均值)
参考:http://eric-gcm.iteye.com/blog/1807468 math.txt: 张三 88 李四 99 王五 66 赵六 77 china.txt: 张三 78 李四 89 王 ...
- hadoop —— MapReduce例子 (数据排序)
参考:http://eric-gcm.iteye.com/blog/1807468 file1.txt: 2 32 654 32 15 756 65223 file2.txt: 5956 22 650 ...
随机推荐
- Ajax无刷新提交
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- [LeetCode] Regular Expression Matching(递归)
Implement regular expression matching with support for '.' and '*'. '.' Matches any single character ...
- mysql存储过程之游标遍历数据表
原文:mysql存储过程之游标遍历数据表 今天写一个mysql存储过程,根据自己的需求要遍历一个数据表,因为对存储过程用的不多,语法不甚熟悉,加之存储过程没有调试环境,花了不少时间才慢慢弄好,故留个痕 ...
- Macro and SQL
If you’ve developed anything in the supply chain area, you’ve most probably come across InventDimJoi ...
- Dancing Stars on Me---hdu5533(判断是否为正多边形)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5533 题意:平面图中 有n个点给你每个点的坐标,判断是否能通过某种连线使得这些点所组成的n边形为 正n ...
- http://blog.csdn.net/clementad/article/details/47403185
http://blog.csdn.net/clementad/article/details/47403185
- docker启动Mysql(转)
cs202@cs202-devbox:~$ sudo docker run -d mysql7698fdd7a2d05d38cf19c60cc9e35c1117fc551ae5e31914494715 ...
- mysql开发中使用存储过程
在mysql开发中使用存储过程的理由: 当希望在不同的应用程序或平台上执行相同的函数,或者封装特定功能时,存储过程是非常有用的 mysql 执行语句是要先编译,然后再执行的.这样如果查询并发大的时候. ...
- web双机热备添加心跳检测ip的时候填了网关导致外网ip不能上网
web双机热备添加心跳检测ip的时候填了网关导致外网ip不能上网 1 连接 机器其他机器, 通过机房做的服务器的局域网,ssh到这台的局域网ip,删除网卡配置文件的网关哪一行,重启网卡. 2 如果没有 ...
- 8月11日 Power-BI V11 QQ群视频交流开课啦
过去,用excel表格来做数据分析是很多企业的首选,但随着时代的发展,excel的某些功能已经不能满足用户的需求.今天的课程呢,我们就基于excel数据源来讲讲数据集构建器的应用. 时间:2016年8 ...