- 浏览: 498845 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (502)
- Java (70)
- Linux (10)
- 数据库 (38)
- 网络 (10)
- WEB (13)
- JSP (4)
- 互联网 (71)
- JavaScript (30)
- Spring MVC (19)
- HTML (13)
- CSS (3)
- AngularJS (18)
- Redis (5)
- Bootstrap CSS (1)
- ZooKeeper (4)
- kafka (6)
- 服务器缓存 (4)
- Storm (1)
- MongoDB (9)
- Spring boot (16)
- log4j (2)
- maven (3)
- nginx (5)
- Tomcat (2)
- Eclipse (4)
- Swagger (2)
- Netty (5)
- Dubbo (1)
- Docker (7)
- Hadoop (12)
- OAuth (1)
- webSocket (4)
- 服务器性能 (7)
- Session共享 (1)
- tieye修改 (1)
- 工作 (1)
- 有用的语录 (0)
- https (2)
- common (5)
- 产品开发管理 (1)
- CDN 工作原理 (1)
- APNS、GCM (1)
- 架构图 (3)
- 功能实现分析 (1)
- JMX (1)
- 服务器相关操作命令 (1)
- img02 (0)
- 服务器环境搭建 (9)
- goodMenuBook (1)
- CEInstantPot (0)
- 有用数据 (1)
- 百度地图WEB API (2)
- 正则表达式 (1)
- 样式例子 (2)
- staticRecipePressureCooker.zip (1)
- jCanvas (1)
- 网站攻击方法原理 (1)
- 架构设计 (3)
- 物联网相关 (3)
- 研发管理 (7)
- 技术需求点 (1)
- 计划 (1)
- spring cloud (11)
- 服务器开发的一些实用工具和方法 (1)
- 每天学到的技术点 (4)
- Guava (1)
- ERP 技术注意要点 (2)
- 微信小程序 (1)
- FineRepor (1)
- 收藏夹 (1)
- temp (5)
- 服务架构 (4)
- 任职资格方案 (0)
- osno_test (1)
- jquery相关 (3)
- mybatis (4)
- ueditor (1)
- VueJS (7)
- python (10)
- Spring EL (1)
- shiro (1)
- 前端开发原理与使用 (7)
- YARN (1)
- Spark (1)
- Hbase (2)
- Pig (2)
- 机器学习 (30)
- matplotlib (1)
- OpenCV (17)
- Hystrix (1)
- 公司 (1)
- miniui (4)
- 前端功能实现 (3)
- 前端插件 (1)
- 钉钉开发 (2)
- Jenkins (1)
- elasticSearch使用 (2)
- 技术规范 (4)
- 技术实现原理 (0)
最新评论
MongoDB mongoTemplate查询条作组合例子
常规查询
Criteria//是条件
Sort//排序
Query//查询语句
聚合查询
(MongoDB的聚合查询(两种方式)):http://www.cnblogs.com/ontheroad_lee/p/3756247.html
(MongoDB 聚合管道(Aggregation Pipeline)):http://www.cnblogs.com/shanyou/p/3494854.html
(MongoDB的聚合查询(两种方式)):http://blog.csdn.net/luckycz/article/details/46924995
(Aggregation Grouping Example):http://www.mkyong.com/mongodb/spring-data-mongodb-aggregation-grouping-example/
(Spring data mongodb聚合查询):http://wenku.baidu.com/link?url=fdgkdGYnqsBRQfR6g1y78ZPJ77huzJ9ZOzIZeQU1cGkCZNTblirRZhjE0EEToHQEjTDSPJahgpC10ZHzr4iPFiqyuBT9oNLYLg8PQ4SZeGa
(Spring Data MongoDB,英文):http://docs.spring.io/spring-data/mongodb/docs/current/reference/html/#mongo.aggregation
(Spring Data MongoDB(Query and Projection Operators),英文):https://docs.mongodb.com/v3.2/reference/operator/query/
(Aggregation Pipeline基础篇上):http://blog.csdn.net/congcong68/article/details/51619882
(MongoDB分组汇总操作):http://www.cnblogs.com/zhuxiaojie/p/6007267.html
(MongoDB按时间分组):http://stackoverflow.com/questions/26770324/how-to-build-combined-id-property-of-the-group-in-mongo-aggregation-using-spri
(MongoDB按页查询):http://blog.csdn.net/itmyhome1990/article/details/52240900
常规查询
public DeviceOnlineStatisticsModel findByKeyAndTimeDateMax(String key) { Sort sort = new Sort(new Order(Direction.DESC, "timeDate")); Criteria criteria = Criteria.where("key").is(key); // Query query = new Query(criteria); query.with(sort).limit(1); List<DeviceOnlineStatisticsModel> deviceOnlineStatisticsModelList = mongoTemplate.find(query, DeviceOnlineStatisticsModel.class); if (deviceOnlineStatisticsModelList.size() == 0) { return null; } return deviceOnlineStatisticsModelList.get(0); }
public List<DeviceOnlineReport> findBetweenTimeDate(Date timeDateStart, Date timeDateEnd) { Criteria criteria = Criteria.where("timeDate").gte(timeDateStart).lt(timeDateEnd); Query query = new Query(criteria); return mongoTemplate.find(query, DeviceOnlineReport.class); }
Criteria//是条件
Sort//排序
Query//查询语句
聚合查询
public DeviceOnlineReport findtest() { TypedAggregation<DeviceOnlineReport> agg = Aggregation.newAggregation(DeviceOnlineReport.class, Aggregation.group("onlineStatus").count().as("num"), Aggregation.project("num").and("onlineStatus").previousOperation()// 结果包含那些字段(num),挑选所需的字段,用"onlineStatus"显示分组的类型,并且不输出以“_id”分组的结果 ); System.out.println(" agg == " + agg.toString()); // { "aggregate" : "__collection__" , "pipeline" : [ { "$group" : {"_id" : "$onlineStatus" , "num" : { "$sum" : 1}}} , { "$project" : {"num" : 1 , "_id" : 0 , "onlineStatus" : "$_id"}}]} AggregationResults<BasicDBObject> result = mongoTemplate.aggregate(agg, BasicDBObject.class); // [{ "num" : 3 , "onlineStatus" : "1"}, { "num" : 3 , "onlineStatus" :"0"}] result.getMappedResults(); System.out.println(" result.getMappedResults == " + result.getMappedResults().toString()); List list = new ArrayList<>(); DeviceOnlineReport deviceOnlineReport = new DeviceOnlineReport(); return deviceOnlineReport; }
public DeviceOnlineReport findtest3() { List<String> collection = new ArrayList<>(); collection.add("0"); collection.add("1"); TypedAggregation<DeviceOnlineReport> agg = Aggregation.newAggregation(DeviceOnlineReport.class, Aggregation.match(Criteria.where("onlineStatus").in(collection)), //条件匹配 (timeDate)minute(timeDate) Aggregation.project("timeDate").andExpression("hour(timeDate)").as("hour"), //andExpression对某个字段执行Mongo命令,并作为新的字段(testTime) Aggregation.group("hour").count().as("num"), Aggregation.project("num").and("hour").previousOperation()// 结果包含那些字段(num),挑选所需的字段,用"onlineStatus"显示分组的类型,并且不输出以“_id”分组的结果 ); System.out.println(" agg == " + agg.toString()); //{ "aggregate" : "__collection__" , "pipeline" : [ { "$match" : { "onlineStatus" : { "$in" : [ "0" , "1"]}}} , { "$project" : { "timeDate" : 1 , "hour" : { "$hour" : [ "$timeDate"]}}} , { "$group" : { "_id" : "$hour" , "num" : { "$sum" : 1}}} , { "$project" : { "num" : 1 , "_id" : 0 , "hour" : "$_id"}}]} AggregationResults<BasicDBObject> result = mongoTemplate.aggregate(agg, BasicDBObject.class);//BasicDBObject result.getMappedResults(); System.out.println(" result.getMappedResults == " + result.getMappedResults().toString()); //[{ "num" : 6 , "hour" : 5}] List list = new ArrayList<>(); DeviceOnlineReport deviceOnlineReport = new DeviceOnlineReport(); return deviceOnlineReport; }
public List<OnlineTime> deviceOnlineTimeStatisticsFromData( DeviceOnlineTimeStatisticsParamModel deviceOnlineTimeStatisticsParamModel) { String logString = "DeviceOnlineTimeStatisticsService deviceOnlineTimeStatisticsService: "; logger.info(logString + "deviceOnlineTimeStatisticsParamModel == " + deviceOnlineTimeStatisticsParamModel.toString()); // 构造符合条件的Criteria String deviceId = deviceOnlineTimeStatisticsParamModel.getDeviceId(); String deviceType = deviceOnlineTimeStatisticsParamModel.getDeviceType(); String modelNo = deviceOnlineTimeStatisticsParamModel.getModelNo(); String cityId = deviceOnlineTimeStatisticsParamModel.getCityId(); Date startDate = deviceOnlineTimeStatisticsParamModel.getStartDate(); Date endDate = deviceOnlineTimeStatisticsParamModel.getEndDate(); if (startDate == null) { startDate = new Date(0, 0, 1); } if (endDate == null) { endDate = new Date(); } logger.info(logString + " startDate == " + startDate); logger.info(logString + " endDate == " + endDate); // 结束时间小于起始时间 if (endDate.before(startDate)) { logger.info(logString + " endDate < startDate"); return null; } Criteria criteria = null; if (StringUtils.isNotBlank(deviceType)) { criteria = Criteria.where("deviceType").is(deviceType); } else { criteria = Criteria.where("deviceType").ne(null); } if (StringUtils.isNotBlank(deviceId)) { criteria.and("deviceId").is(deviceId); } if (StringUtils.isNotBlank(modelNo)) { criteria.and("modelNo").is(modelNo); } if (StringUtils.isNotBlank(cityId)) { criteria.and("cityId").is(cityId); } criteria.and("offlineDate").gte(startDate).lt(endDate); // // 确定分组方式 String groupBy = null; if (deviceOnlineTimeStatisticsParamModel.getGroupType() == 1) { groupBy = "deviceType";// deviceType } else if (deviceOnlineTimeStatisticsParamModel.getGroupType() == 2) { groupBy = "modelNo";// modelNo } else if (deviceOnlineTimeStatisticsParamModel.getGroupType() == 3) { groupBy = "cityId";// cityId } else if (deviceOnlineTimeStatisticsParamModel.getGroupType() == 4) { groupBy = "deviceId";// deviceId } else { groupBy = "deviceType";// deviceType } // match MatchOperation matchOperation = Aggregation.match(criteria);// 条件匹配 // ProjectionOperation projectionOperationYear = Aggregation // .project("deviceType", "offlineDate", "deviceId", "timeLen", // "onlineDate", "src", "modelNo") // .andExpression("year(offlineDate)").as("year").andExpression("month(offlineDate)").as("month"); // ProjectionOperation projectionOperationYear = Aggregation // .project("deviceType", "offlineDate", "deviceId", "timeLen", // "onlineDate", "src", "modelNo") // .andExpression("year(offlineDate)").as("year").andExpression("month(offlineDate)").as("month").and(groupBy).as("groupKey"); //要写成一行,它是以管道的方式进行的,也可以写成多个,但字段是一层层流过去的,你这一层没有,后面的都会没有的 ProjectionOperation projectionOperationYear = Aggregation .project("deviceType", "offlineDate", "deviceId", "timeLen", "onlineDate", "src", "modelNo") .andExpression("year(offlineDate)").as("year").andExpression("month(offlineDate)").as("month"); logger.info(logString + " projectionOperationYear == " + projectionOperationYear.toString()); // group GroupOperation groupOperation = Aggregation.group(groupBy, "year", "month").sum("timeLen").as("timeLen"); logger.info(logString + " groupOperation == " + groupOperation.toString()); // project// // 结果包含那些字段(num),挑选所需的字段,用"onlineStatus"显示分组的类型,并且不输出以“_id”分组的结果 // ProjectionOperation projectionOperation = // Aggregation.project("timeLen", "year", "month").and("groupKey") // .previousOperation(); //结果: //{ //"groupKey":"{ "deviceType" : "0xEF" , "year" : 2016 , "month" : 12}", //"timeLen":70988000 //} ProjectionOperation projectionOperation = Aggregation.project(groupBy, "timeLen", "year", "month").and(groupBy) .as("groupKey").andExclude("_id"); //结果: //{ // "groupKey":"00000025", // "month":12, // "timeLen":440078000, // "year":2016 //} logger.info(logString + " projectionOperation == " + projectionOperation.toString()); // 构造聚合函数 TypedAggregation<DeviceOnlineTimeStatisticsModel> aggregation = Aggregation.newAggregation( DeviceOnlineTimeStatisticsModel.class, matchOperation, projectionOperationYear, groupOperation, projectionOperation); logger.info(logString + " agg == " + aggregation.toString()); // 执行聚合函数 AggregationResults<OnlineTime> result = mongoTemplate.aggregate(aggregation, OnlineTime.class); // logger.info(logString + " result == " + result.getMappedResults()); List<OnlineTime> onlineNunList = result.getMappedResults(); logger.info(logString + " onlineNunList == " + onlineNunList.toString()); return onlineNunList; }
(MongoDB的聚合查询(两种方式)):http://www.cnblogs.com/ontheroad_lee/p/3756247.html
(MongoDB 聚合管道(Aggregation Pipeline)):http://www.cnblogs.com/shanyou/p/3494854.html
(MongoDB的聚合查询(两种方式)):http://blog.csdn.net/luckycz/article/details/46924995
(Aggregation Grouping Example):http://www.mkyong.com/mongodb/spring-data-mongodb-aggregation-grouping-example/
(Spring data mongodb聚合查询):http://wenku.baidu.com/link?url=fdgkdGYnqsBRQfR6g1y78ZPJ77huzJ9ZOzIZeQU1cGkCZNTblirRZhjE0EEToHQEjTDSPJahgpC10ZHzr4iPFiqyuBT9oNLYLg8PQ4SZeGa
(Spring Data MongoDB,英文):http://docs.spring.io/spring-data/mongodb/docs/current/reference/html/#mongo.aggregation
(Spring Data MongoDB(Query and Projection Operators),英文):https://docs.mongodb.com/v3.2/reference/operator/query/
(Aggregation Pipeline基础篇上):http://blog.csdn.net/congcong68/article/details/51619882
(MongoDB分组汇总操作):http://www.cnblogs.com/zhuxiaojie/p/6007267.html
(MongoDB按时间分组):http://stackoverflow.com/questions/26770324/how-to-build-combined-id-property-of-the-group-in-mongo-aggregation-using-spri
(MongoDB按页查询):http://blog.csdn.net/itmyhome1990/article/details/52240900
发表评论
-
mongodb的mapreduce
2017-01-09 15:23 464mongodb的mapreduce 工作原理: 1.里面有 ... -
MongoDB 并发与锁机制
2016-12-05 09:42 2539MongoDB 并发与锁机制 1.为确何数据的一致性,防止 ... -
MongoDB 常规命令
2016-12-03 16:04 596MongoDB 常规命令 创建数据库 use DATABA ... -
MongoDB 简单介绍
2016-12-03 16:01 523MongoDB 简单介绍 1.MongoDB 是由C++语言 ... -
Spring Data MongoDb Repository 简单使用例子
2016-11-02 15:35 2918Spring Data MongoDb Repository ... -
MongoDB应用例子
2016-10-18 16:32 625MongoDB应用例子 JDBC应用例子: <dep ... -
MongoDB简介、安装、配置
2016-10-14 17:58 401MongoDB简介、安装、配置 简介 1.是由C++语言编 ... -
mongodb
2016-08-18 08:34 470参考原文:http://www.cnblogs.com/yan ...
相关推荐
MongoDBTemplate mongoTemplate = new MongoDBTemplate(mongoDbFactory); ``` 在`applicationContext.xml`或类似的配置文件中,你会设置MongoDB的相关连接信息,如服务器地址、端口、数据库名和认证信息等。例如: ...
"MongoDB 使用 MongoTemplate 实现统计和分组" MongoDB 是一个非常流行的 NoSQL 数据库,它可以存储大量的数据,但是有时候我们需要对这些数据进行分析和利用。在本文中,我们将介绍如何使用 MongoTemplate 实现...
其中,`MongoTemplate`是Spring Data MongoDB的核心组件,它提供了一种模板方法模式,用于执行各种MongoDB操作。 首先,我们需要在`pom.xml`文件中添加Spring Boot MongoDB的依赖: ```xml <groupId>org.spring...
MongoTemplate是Spring Data MongoDB框架中的一个核心组件,用于在Java应用中方便地操作MongoDB数据库。这个资源包“mongoTemplate工具类Dao层方法封装.zip”显然提供了两种版本的MongoTemplate操作集合的代码示例,...
MongoDB MongoVue 客户端(破解版)
- **MongoTemplate**:作为Spring Data MongoDB的核心类,提供了丰富的操作MongoDB的方法。 - **文档操作**:涵盖了保存、更新、删除文档等操作。 - **查询文档**:包括查询集合中的文档、地理空间查询、全文查询等...
下面我们将详细讨论如何在 Spring Boot 中集成 MongoDB,并通过使用 `MongoTemplate` 进行数据的增删改查操作。 **1. 添加依赖** 首先,我们需要在项目中添加 MongoDB 和 Spring Data MongoDB 的依赖。如果你使用...
### MongoDB 批量插入及更新知识点详解 #### 一、MongoDB简介 MongoDB是一款开源的NoSQL数据库系统,以其高性能、高可用性和易用性而受到广泛欢迎。它使用JSON-like文档(即BSON格式)来存储数据,并且支持动态模式...
`MongoTemplate`是一个低级别的操作工具,允许直接编写MongoDB查询语句。例如,查找所有用户: ```java @Autowired private MongoTemplate mongoTemplate; public List<User> findAllUsers() { Query query = new...
对于那些希望了解如何使用SpringData MongoDB的开发人员来说,文档还提供了参考资料和入门指南,从如何安装和配置MongoDB到如何使用MongoTemplate以及创建自定义Repository实现等不同层次的内容都有涉及。...
java springboot mongodb 通过mongotemplate获取mongo服务器当前时间。
MongoDB以其灵活的数据模型、强大的查询能力以及易于扩展的架构而受到许多开发者喜爱。MongoVUE则是一款专为MongoDB设计的图形化管理工具,它提供了直观的用户界面,使得数据库的管理和操作变得更加便捷。 MongoVUE...
java对mongodb数据库的增删改查测试demo。可直接运行,需要自己安装mongodb数据库,需要手动添加bins包下面的jdbc的jar包和junit4的jar包。包含自己写的mongodb安装文档。
在修改的代码段中,主要对“or”逻辑进行了处理,具体通过查询条件数组中的键名判断,将匹配到的条件转换成MongoDB可以识别的格式,并组合到一起形成复合查询。例如,当条件值中包含“or”,会创建一个数组,并将...
在Spring Boot中,我们可以利用`org.springframework.data.mongodb.core.MongoTemplate`或`org.springframework.data.mongodb.repository.ReactiveMongoRepository`与MongoDB交互。对于聚合操作,我们需要使用`Mongo...
前言前面讲解了如何在springboot中集成mongodb,本文将讲解mongodb命令操作及其MongoTemplate的使用。穿插的目的在于不用先去寻找m
mongodb 数据库基本操作 1、mongoDB的介绍 mongoDB是一个基于分布式文件存储的数据库,由 C++ 语言编写,旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。它介于关系数据库和非关系数据库之间,被认为是非...
使用的是SafeMode.True开关),这个测的是安全插入性能会差多少4)查询一个索引后的数字列,返回10条记录(也就是10KB)的性能,这个测的是索引查询的性能5)查询两个索引后的数字列,返回10条记录(每条记录只
它的输出有以下几列:类似于MySQL的slowlog,MongoDB可以监控所有慢的以及不慢的查询。Profiler默认是关闭的,你可以选择全部开启,或者有慢查询的时候开启。查看Profile日志3个字段的意义不多说,此处有官方文档。...