`

mongodb 分组 得到第一条数据

 
阅读更多

业务逻辑:

控制器每分钟上报采集数据,现需得到每个控制器的每种采集数据的最近一条数据:

性能比较低。。。

 

/**
     * 分组,得到每个控制器每种采集类型的离当前最近的一条记录
     */
    private static void group () {
    	
    	DBCollection coll = MongoDBUtils.getInstance().getDataColl();
    	
    	// 按collectType分组
    	BasicDBObject key = new BasicDBObject("collectType", true);
    	
    	BasicDBObject cond = new BasicDBObject();
    	
    	cond.put(LedConstants.MONGODB_LONGITUDE, Double.parseDouble("119.974758"));
    	cond.put(LedConstants.MONGODB_LATITUDE, Double.parseDouble("31.687605"));
    	cond.put(LedConstants.MONGODB_CONTROLLER_CODE, "10");
    	cond.put(LedConstants.MONGODB_COLLECT_TYPE, 1);
    	
    	BasicDBObject initial = new BasicDBObject();
    	// 给result中的属性赋默认值
    	initial.append("newestCollectValue", 0);
    	initial.append("firstTime", 0);
    	// js 代码
    	String reduce = " function(curr, result) { " 
    		+ " if (!result.firstTime) { "
    		+ " result.createDate = curr.createDate; "
    		+ " result.newestCollectValue = curr.collectValue; "
    		+ " result.firstTime = 1; "
    		+ " } "
    		+ " if (curr.createDate > result.createDate) { "
    		+ " result.newestCollectValue = curr.collectValue; "
    		+ " result.createDate = curr.createDate; "
    		+ " } "
    		+ " } ";
    	
    	String finaly = null;
    	
    	BasicDBList group = (BasicDBList) coll.group(key, cond, initial, reduce, finaly);
    	
    	System.out.println(group);
    	
    }

 

 

分享到:
评论

相关推荐

    MongoDB聚合分组取第一条记录的案例与实现方法

    今天开发同学向我们提了一个紧急的需求,从集合mt_resources_access_log中,根据字段refererDomain分组,取分组中最近一笔插入的数据,然后将这些符合条件的数据导入到集合mt_resources_access_log_new中。...

    深入云计算 MongoDB管理与开发实战详解pdf.part1

    第1章 MongoDB简介 1.1 关系型数据库简介 1.2 关系型数据库面临的问题 1.3 NoSQL的崛起 1.4 MongoDB是如何解决这些问题的 1.5 初识MongoDB 1.5.1 MongoDB的特点 1.5.2 数据模型 1.5.3 扩展性 ...

    深入云计算 MongoDB管理与开发实战详解pdf.part2

    第1章 MongoDB简介 1.1 关系型数据库简介 1.2 关系型数据库面临的问题 1.3 NoSQL的崛起 1.4 MongoDB是如何解决这些问题的 1.5 初识MongoDB 1.5.1 MongoDB的特点 1.5.2 数据模型 1.5.3 扩展性 ...

    Python在groupby分组后提取指定位置记录方法

    我们可以通过first、last来提取分组后第一条和最后一条样本。但如果我们要取指定位置的样本,就没有现成的函数。需要我们自己去写了。下面我就为大家介绍如何实现上面的功能。 1)数据介绍 action表共有3列:userid...

    MongoDB学习笔记之MapReduce使用示例

    一、mapreduce是根据map函数里调用的emit函数的第一个参数来进行分组的 Map-Reduce是一种计算模型,简单的说就是将大批量的工作(数据)分解(MAP)执行,然后再将结果合并成最终结果(REDUCE)。 使用 MapReduce 要...

    EcomWeb:非常基本的ecom网站,由mongodb支持

    首先,应该说这是我在 10 多年没有编码任何东西后第一次尝试 Ecom 网站。 数据库后端是 MongoDB,包含产品和用户的集合。 有一种产品分组机制,但仅限于一个子组。 所有页面都使用java标签库进行模板化,变量通过...

    数据库系统原理与开发-文档型数据库-2.pdf

    mongodb的数据将会保存在底层文件系统中,dbpath设定为 "/data/db"目录,创建一个database为"test",collection为 "sample",然后在此collection中插入数条documents。我们查 看dbpath下生成的文件列表: 5 数据库...

    Pentaho Kettle解决方案:使用PDI构建开源ETL解决方案 part2

    资源太大,只能分两部门,这是第二部分,第一部分点我主页看资源,谢谢。 高清版(中文) 《Pentaho Kettle解决方案:使用PDI构建开源ETL解决方案》主要介绍如何使用开源ETL工具来完成数据整合工作。 《Pentaho ...

    基于Java+JQuery+Bootstrap毕业设计管理系统.zip

    系主任设定第一轮选题时间 教务员开放选题子系统 学生进行第一轮选题 系主任分配第一轮选题, 教务员关闭选题子系统 系主任设定第二轮选题时间 学生进行第二轮选题 系主任分配第二轮选题 系主任给剩余学生分配选题 ...

    最近很火的分布式数据库 RethinkDB.zip

    协作网站和移动应用数据流分析应用多人在线游戏实时交易场所设备联机举个例子:在协作设计一个app的时候,其中一个用户改变了某个按钮的位置,服务器就必须在第一时间通知所有在完成同一项目的其他用户。网页浏览器 ...

    .NET的极速开发框架

    (13)模块开发简单,实体类建立后即具备第一条所述功能 (14)实体层、数据层、业务层、操作事件层可配置 (15)支持SQL语句操作、支持Lamda表达式与SQL联合查询、支持读写分离 (16)多种关系类型数据库支持,...

    Rookey.Frame企业级极速开发框架.zip

    (13)模块开发简单,实体类建立后即具备第一条所述功能 (14)实体层、数据层、业务层、操作事件层可配置 (15)支持SQL语句操作、支持Lamda表达式与SQL联合查询、支持读写分离 (16)多种关系类型数据库支持,...

    在线办公小程序--(源码+部署说明+演示视频+源码介绍+lw).zip

    数据库技术:使用MongoDB作为数据库,存储用户信息、任务数据等。 实时通信技术:使用WebSocket协议实现实时数据传输,方便用户实时接收任务更新和消息通知。 第三方登录:集成微信登录功能,方便用户快速注册和...

    ThinkPHP内核聊天室即时通讯系统源码 类似微信的H5聊天系统APP源码_源码下载

    前端: 用Dcloud 的 uni-app全系,基于vue...游戏:可添加你的官方网站或者游戏网站其它~自定义嵌入第三方网站 个人信息:显示头像、昵称、帐号;可以修改头像和昵称。 修改密码:可以修改登录密码。 朋友圈:可以发动态

    【RT-Thread作品秀】数采一期下位机-电路方案

    第一部分 服务端 本期采用关键技术有nodejs、eggjs、socketio、mongodb等,主要为设备提供云端连接服务、可定制化协议解析、消息转发,报警等功能。 第二部分 后台管理端 本期采用关键技术有vue、element-ui、vue-...

    databases:该存储库包含有关HackYourFuture模块“数据库”的所有材料。

    如果您遵循HackYourFuture课程,我们建议您从模块1: 。 要首先获得HackYourFuture课程的完整概述,...在开始第一堂课之前,您需要安装必需的软件:MySQL。 这取决于您的操作系统: 在安装MySQL v8的过程中,您将在最

    商城(thinkphp5)

    1.完善的QQ,微信第三方支付、第三方用户登录机制 2.精细的微信模块处理 3.惰性加载 4.路由、自动加载的缓存机制 5.模型及关联MongoDB支持 6.数据库集群及数据缓冲 更新方法: 1.解压后将niushop_b2c文件夹内的所有...

    sqltoy-orm框架系统-其他

    4、最强大的分页查询:很多人第一次了解到何为快速分页、分页优化这种极为巧妙的处理,还有在count语句上的极度优化。 5、跨数据库函数方言替换,如:isnull/ifnull/nvl、substr/substring 等不同数据库。 sqltoy-...

    Node与Express开发.pdf

    第 1 章 初识 Express .......................................................................................................................1 1.1 JavaScript 革命 .........................................

Global site tag (gtag.js) - Google Analytics