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 ...
随机推荐
- the differences between function and procedure
一.自定义函数: 1. 可以返回表变量 2. 限制颇多,包括 不能使用output参数: 不能用临时表: 函数内部的操作不能影响到外部环境: 不能通过select返回结果集: 不能update,del ...
- 远程通知APNs(Apple Push Notification Server)
推送通知是由应用服务提供商发起的,通过苹果的APNs(Apple Push Notification Server)发送到应用客户端.下面是苹果官方关于推送通知的过程示意图: 推送通知的过程可以分为以 ...
- AGS API for JavaScript 图表上地图
原文:AGS API for JavaScript 图表上地图 图1 图2 图3 -------------------------------------华丽丽的分割线--------------- ...
- ArcGIS Engine开发之旅04---ARCGIS接口详细说明
原文:ArcGIS Engine开发之旅04---ARCGIS接口详细说明 ArcGIS接口详细说明... 1 1. IField接口(esriGeoDatabase)... 2 2. ...
- Magento Service Temporarily Unavailable解决方法
插件升级错误或安装失败时 会出现Service Temporarily Unavailable错误,使网站前台后台都无法显示. 在操作完成的情况下,仍然出现这个错误时可以采用以下方法: 1.删除网站站 ...
- webKit和chromium的文章地址
http://blog.csdn.net/column/details/yongsheng.html?&page=1
- NSUserDefaults的小封装
//保存 -(void)saveToUserDefaults:(NSString*)tosaveedString withKey:(NSString *)tosaveedKey { NSUserDe ...
- typedef 和 const
1. typedef 允许你为各种数据类型定义新名字 #include <stdio.h>typedef char *ptr_to_char; //这让我看起来,好奇怪,不好读void m ...
- python模块(os)
os模块 os模块提供了许多与操作系统交互的接口 os.getcwd() -> str # 返回当前路径, 相当于pwd os.chdir("dirname") -> ...
- 第五篇 SQL Server安全架构和安全
本篇文章是SQL Server安全系列的第五篇,详细内容请参考原文. 架构本质上是一个数据库对象,其他对象的一个容器,在复杂的数据库中它能够很容易的管理各组对象.架构具有重要的安全功能.在这一篇你会学 ...