`

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聚合分组取第一条记录的案例与实现方法

    使用聚合框架的第一步是对数据进行分组,这里的目标是根据 `refererDomain` 创建分组。同时,我们可以将新生成的分组结果输出到一个新的集合 `mt_resources_access_log20190122` 中。对应的MongoDB命令如下: ```...

    MongoDB大数据处理权威指南

    MongoDB是一种非关系型数据库系统,它使用JSON风格的数据存储方式(称为BSON格式),这使得数据存储更加灵活高效。MongoDB支持动态查询、索引、聚合等多种功能,特别适用于需要处理大量复杂数据的应用场景。 #### ...

    MongoDB_two_MongoDB_

    7.聚合框架:MongoDB的聚合框架允许对数据进行处理和分析,包括分组、过滤、计算统计值等操作,类似于SQL的聚合函数。 8. Replication与Sharding:MongoDB的复制集可以提供高可用性和数据冗余,而分片则用于水平...

    MONGODB实战第2版.pdf.zip

    MongoDB实战第2版.pdf.zip是一个压缩包,包含了一份关于MongoDB的实战指南。MongoDB是一种流行的开源、文档型数据库,适用于处理大量结构化和半结构化的数据。这本书的第二版很可能提供了对MongoDB最新特性和最佳...

    mongodb3.2.4说明文档

    聚合管道是一种强大的工具,可以处理复杂的数据查询,支持多个阶段的数据处理,如筛选、排序、分组等。 **7.2 Map-Reduce** 虽然 Map-Reduce 在某些场景下仍然有用,但 MongoDB 推荐使用聚合管道进行数据分析,...

    MongoDB权威指南(中文第2版).pdf.zip

    1. **数据模型与查询**:MongoDB使用BSON(Binary JSON)数据格式,允许存储复杂的数据结构,如嵌套文档和数组。书中详细介绍了如何创建、读取、更新和删除文档,以及查询操作符的使用,如匹配、投影、排序、分组等...

    mongodb的小例子

    创建集合不需要预先定义,当插入第一个文档时会自动创建。例如,`collection = db['collection_name']`可以创建或选择一个集合。 5. **文档操作**:MongoDB以文档为单位存储数据,文档是JSON对象。你可以使用`...

    收集的Mongodb资料

    6. 新增功能:介绍自第1版以来MongoDB新增的重要特性,如Change Streams、Transactions等。 7. MongoDB的运维:包含备份、恢复、日志分析和故障排查等运维实践。 8. 社区和生态:介绍MongoDB社区、工具生态系统和...

    MongoDB权威指南第2版

    在查询语言部分,书中详细讲解了MongoDB的查询操作,包括如何选择、过滤、排序和分组数据,以及如何使用聚合框架进行更复杂的分析。此外,书中还涵盖了索引的创建和管理,这对于优化查询性能至关重要。 接着,书中...

    spring-data使用mongodbTemplate对MongoDB进行读写操作

    `updateFirst()`和`updateMulti()`用于更新匹配条件的第一个文档或所有文档。`remove()`方法则用于删除文档: ```java Update update = new Update().set("email", "newEmail@example.com"); Query query = new ...

    mongodb数据库的一些简单实用

    - 查询集合中的第一条数据: ```javascript db.stu.findOne() ``` **5. 更新数据** 更新数据使用 `update` 命令,它接受两个参数:一个是查询条件,另一个是更新操作。需要注意的是,`update` 默认只更新找到...

    Laravel开发-mongodb

    MongoDB则是一种流行的NoSQL数据库系统,以其灵活性、可扩展性和处理非结构化数据的能力而闻名。当我们谈论“Laravel开发-mongodb”时,我们指的是在Laravel项目中集成并使用MongoDB作为数据存储解决方案。 1. **...

    Mongodb增加、删除和查询操作

    此外,`findOne()`方法用于获取第一个匹配的文档: ```javascript var user = db.users.findOne({ name: "张三" }); ``` MongoDB还支持复杂的查询操作,如聚合框架(Aggregation Framework),它允许我们进行更...

    mongodb操作文档.doc

    - `db.collectionName.remove(query, justOne)`,query是删除条件,justOne表示是否只删除第一个匹配的文档,默认为false。 除此之外,MongoDB 还支持数据的投影(选择特定字段显示)、排序(`db.collectionName....

    MongoDB The Definitive Guide 3rd Edition.pdf

    1. MongoDB的基本概念:MongoDB是一个基于文档的NoSQL数据库,使用BSON(Binary Serialized Object Notation)来存储数据。 MongoDB的数据模型是基于文档的,每个文档都是一个独立的数据单元,包含字段和值。 2. ...

    MongoDB聚合实战:数据分析与财务应用轻松入门

    在第一部分,书中介绍了 MongoDB 的基础知识。从聚合的魅力开始,阐述了为什么 MongoDB 在数据分析领域具有如此重要的地位。接着,书中详细说明了如何安装和配置 MongoDB,以便开始使用。对于那些不熟悉 MongoDB 的...

    Thinkphp使用mongodb数据库实现多条件查询方法

    在parseWhere方法中,如果特殊条件表达式不是数组的第一个元素,会导致查询条件丢失。这表明查询构建器在处理复合条件时存在缺陷。代码需要调整,以确保当遇到复合条件表达式时,它能够正确地将查询项合并到查询数组...

Global site tag (gtag.js) - Google Analytics