聚合语句-比较集合内两字段大小
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例子的更多相关文章

  1. 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- ...

  2. beetlex网关之聚合和url请求过虑

    在这里主要介绍beetlex应用网关的两个插件,分别是聚合和url请求过虑.通过聚合插件可以把整合多个请求的数据来应答请求端,而Url请求过虑同可以拒绝一些有非常关键字的请求. 请求聚合 在网关服务中 ...

  3. Hadoop MapReduce例子-新版API多表连接Join之模仿订单配货

    文章为作者原创,未经许可,禁止转载.    -Sun Yat-sen University 冯兴伟 一.    项目简介: 电子商务的发展以及电商平台的多样化,类似于京东和天猫这种拥有过亿用户的在线购 ...

  4. 如何快速地编写和运行一个属于自己的 MapReduce 例子程序

    大数据的时代, 到处张嘴闭嘴都是Hadoop, MapReduce, 不跟上时代怎么行? 可是对一个hadoop的新手, 写一个属于自己的MapReduce程序还是小有点难度的, 需要建立一个mave ...

  5. Hadoop 1.2.1 MapReduce 例子

    自学hadoop真的很困难,主要是hadoop版本太混乱了,各个版本之间兼容性并不算太好.更主要的是网上的很多MapReduce的Java例子不写import!!!只写类名!!!偏偏Hadoop中有很 ...

  6. hadoop —— MapReduce例子 (数据去重)

    参考:http://eric-gcm.iteye.com/blog/1807468 例子1: 概要:数据去重 描述:将file1.txt.file2.txt中的数据合并到一个文件中的同时去掉重复的内容 ...

  7. DDD中的聚合和UML中的聚合以及组合的关系

    UML:聚合关系:成员对象是整体的一部分,但是成员对象可以脱离整体对象独立存在.如汽车(Car)与引擎(Engine).轮胎(Wheel).车灯(Light)之间的关系为聚合关系,引擎.轮胎.车灯可以 ...

  8. hadoop —— MapReduce例子 (求平均值)

    参考:http://eric-gcm.iteye.com/blog/1807468 math.txt: 张三 88 李四 99 王五 66 赵六 77 china.txt: 张三 78 李四 89 王 ...

  9. hadoop —— MapReduce例子 (数据排序)

    参考:http://eric-gcm.iteye.com/blog/1807468 file1.txt: 2 32 654 32 15 756 65223 file2.txt: 5956 22 650 ...

随机推荐

  1. TCP的三次握手四次挥手

    一.三次握手 1.wireshark 抓包 2.TCP报文手部 注意标志位: 1).同步 SYN = 1 表示这是一个连接请求或连接接受报文. 2).只有当 ACK = 1 时确认号字段才有效.当 A ...

  2. Visual Studio 2005安装qt-win-commercial-src-4.3.1,并设置环境变量

    虽然已经在Visual Studio 2005下安装Qt4已经n次了,还是打算在上写写安装方法. qt-win-commercial-src-4.3.1.zip.qt-vs-integration-1 ...

  3. DOCTYPE、指定语言、字符集

    <!DOCTYPE html> 在HTML的最开始部分声明DOCTYPE文档类型,可以让浏览器或其他用户代理知道你要使用的Html语言类型:无论你打算使用何种类型的HTML语言,DOCTY ...

  4. zepto源码--extend--学习笔记

    对象继承函数: $.extend(){},默认传递一个参数,需要继承的对象目标.函数展示: 最终实现的过程,需要调用工具函数extend,首先分析extend函数. 默认传递三个参数,继承的目标对象- ...

  5. Jquery调用webService的四种方法

    1.编写4种WebService方法 [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(Conf ...

  6. Swift-01 UIWebView加载网页

    UIWebView在swift里面的语法,和OC不太一样,但是,使用方法什么的,都是从OC演变过来的.比如,都得有init方法,都有loadRequest方法,所以,有了OC这个基础,学习swift是 ...

  7. Java学习-035-JavaWeb_004 -- JSP include 指令

    inclue 指令是将不同的文件插入到 JSP 网页中,这些文件可以是文本文件.HTML文件.JSP 文件,指令语法如下: <%@include file="相对路径"%&g ...

  8. JSON.stringify初识

    1.JSON.stringify()简介: JSON.stringify()这个函数是用来序列化对象的,即是把对象类型转换成json类型. 它有三个参数,即JSON.stringify(value [ ...

  9. Windows7下 配置 Apache + PHP + MySQL + Zend Studio配置

    相关软件下载: Apache                               版本:(httpd-2.2.25) PHP                                   ...

  10. net异步线程获取返回值的三种方式

    方式一:endInvoke using System; using System.Collections.Generic; using System.Text; using System.Thread ...