业务逻辑:
控制器每分钟上报采集数据,现需得到每个控制器的每种采集数据的最近一条数据:
性能比较低。。。
/** * 分组,得到每个控制器每种采集类型的离当前最近的一条记录 */ 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); }
相关推荐
使用聚合框架的第一步是对数据进行分组,这里的目标是根据 `refererDomain` 创建分组。同时,我们可以将新生成的分组结果输出到一个新的集合 `mt_resources_access_log20190122` 中。对应的MongoDB命令如下: ```...
MongoDB是一种非关系型数据库系统,它使用JSON风格的数据存储方式(称为BSON格式),这使得数据存储更加灵活高效。MongoDB支持动态查询、索引、聚合等多种功能,特别适用于需要处理大量复杂数据的应用场景。 #### ...
7.聚合框架:MongoDB的聚合框架允许对数据进行处理和分析,包括分组、过滤、计算统计值等操作,类似于SQL的聚合函数。 8. Replication与Sharding:MongoDB的复制集可以提供高可用性和数据冗余,而分片则用于水平...
MongoDB实战第2版.pdf.zip是一个压缩包,包含了一份关于MongoDB的实战指南。MongoDB是一种流行的开源、文档型数据库,适用于处理大量结构化和半结构化的数据。这本书的第二版很可能提供了对MongoDB最新特性和最佳...
聚合管道是一种强大的工具,可以处理复杂的数据查询,支持多个阶段的数据处理,如筛选、排序、分组等。 **7.2 Map-Reduce** 虽然 Map-Reduce 在某些场景下仍然有用,但 MongoDB 推荐使用聚合管道进行数据分析,...
1. **数据模型与查询**:MongoDB使用BSON(Binary JSON)数据格式,允许存储复杂的数据结构,如嵌套文档和数组。书中详细介绍了如何创建、读取、更新和删除文档,以及查询操作符的使用,如匹配、投影、排序、分组等...
创建集合不需要预先定义,当插入第一个文档时会自动创建。例如,`collection = db['collection_name']`可以创建或选择一个集合。 5. **文档操作**:MongoDB以文档为单位存储数据,文档是JSON对象。你可以使用`...
6. 新增功能:介绍自第1版以来MongoDB新增的重要特性,如Change Streams、Transactions等。 7. MongoDB的运维:包含备份、恢复、日志分析和故障排查等运维实践。 8. 社区和生态:介绍MongoDB社区、工具生态系统和...
在查询语言部分,书中详细讲解了MongoDB的查询操作,包括如何选择、过滤、排序和分组数据,以及如何使用聚合框架进行更复杂的分析。此外,书中还涵盖了索引的创建和管理,这对于优化查询性能至关重要。 接着,书中...
`updateFirst()`和`updateMulti()`用于更新匹配条件的第一个文档或所有文档。`remove()`方法则用于删除文档: ```java Update update = new Update().set("email", "newEmail@example.com"); Query query = new ...
- 查询集合中的第一条数据: ```javascript db.stu.findOne() ``` **5. 更新数据** 更新数据使用 `update` 命令,它接受两个参数:一个是查询条件,另一个是更新操作。需要注意的是,`update` 默认只更新找到...
MongoDB则是一种流行的NoSQL数据库系统,以其灵活性、可扩展性和处理非结构化数据的能力而闻名。当我们谈论“Laravel开发-mongodb”时,我们指的是在Laravel项目中集成并使用MongoDB作为数据存储解决方案。 1. **...
此外,`findOne()`方法用于获取第一个匹配的文档: ```javascript var user = db.users.findOne({ name: "张三" }); ``` MongoDB还支持复杂的查询操作,如聚合框架(Aggregation Framework),它允许我们进行更...
- `db.collectionName.remove(query, justOne)`,query是删除条件,justOne表示是否只删除第一个匹配的文档,默认为false。 除此之外,MongoDB 还支持数据的投影(选择特定字段显示)、排序(`db.collectionName....
1. MongoDB的基本概念:MongoDB是一个基于文档的NoSQL数据库,使用BSON(Binary Serialized Object Notation)来存储数据。 MongoDB的数据模型是基于文档的,每个文档都是一个独立的数据单元,包含字段和值。 2. ...
在第一部分,书中介绍了 MongoDB 的基础知识。从聚合的魅力开始,阐述了为什么 MongoDB 在数据分析领域具有如此重要的地位。接着,书中详细说明了如何安装和配置 MongoDB,以便开始使用。对于那些不熟悉 MongoDB 的...
在parseWhere方法中,如果特殊条件表达式不是数组的第一个元素,会导致查询条件丢失。这表明查询构建器在处理复合条件时存在缺陷。代码需要调整,以确保当遇到复合条件表达式时,它能够正确地将查询项合并到查询数组...