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 ...
随机推荐
- QComboBox
#include "dialog.h" #include "ui_dialog.h" #include <QtCore> #include < ...
- Linux centos关机与重启命令详解与实战
Linux centos重启命令: 1.reboot 2.shutdown -r now 立刻重启(root用户使用) 3.shutdown -r 10 过10分钟自动重启(root用户使用) 4.s ...
- 取消table中tr td的边距
<table border="0" cellspacing="0" cellpadding="0">
- Eclipse代码风格
1.代码对齐风格:project...properties...Java Code Style...Formatter...Brance
- Javascript位置 body之前、后执行顺序
简介:当页面加载的时候,嵌入html标记的js代码和位于<body></body>之间的js代码将被执行:当调用的时候,位于<head></head>之 ...
- The Secrets of Oracle Row Chaining and Migration
from http://www.akadia.com/services/ora_chained_rows.html Overview If you notice poor performance in ...
- MySQL: 详细的sql语句
1添 1.1[插入单行] insert [into] <表名> (列名) values (列值)例:insert into Strdents (姓名,性别,出生日期) values ('开 ...
- android JSONArray JSONObject 字符串转json数组 遍历json对象
String json = "{''data'':[{''name'':''Wallace''},{''name'':''Grommit''}]}"; StringBuffer m ...
- uwsgi + nigix + django的样式展示
编辑添加黄色部分 是你的项目目录 在你的项目目录写的静态文件 内的样式调用的是static 如果不是 请改名 [root@ayibang-server s10day11]# vim /etc/ng ...
- Python模块(radom)
radom radom模块提供了随机生成对象的方法 Help on module random: NAME random - Random variable generators. FILE /usr ...