构建条件方法

@Override
public Query getQuery(ReportParam param){ //check
MeenoAssert.hasLength(param.getUuid(),"uuid can not empty!");
MeenoAssert.notNull(param.getChartType(),"chartType can not empty!"); Query query = new Query(); //uuid
if(!StringUtils.isEmpty(param.getUuid())){
query.addCriteria(Criteria.where("uuid").is(param.getUuid()));
} //chartType
if(param.getChartType() != null){
query.addCriteria(Criteria.where("chartType").is(param.getChartType()));
} //rowName
if(!StringUtils.isEmpty(param.getRowName())){
query.addCriteria(Criteria.where("rowName").is(param.getRowName()));
} //groupName
if(!StringUtils.isEmpty(param.getGroupName())){
query.addCriteria(Criteria.where("groupName").is(param.getGroupName()));
} //风向
if(!StringUtils.isEmpty(param.getWindDirection())){
query.addCriteria(Criteria.where("windDirection").is(param.getWindDirection()));
} //场景id
if(param.getSceneId() != null){
query.addCriteria(Criteria.where("sceneId").is(param.getSceneId()));
} //物料id
if(param.getMaterialId() != null){
query.addCriteria(Criteria.where("materialId").is(param.getMaterialId()));
} //火灾类型
if(param.getFireType() != null){
query.addCriteria(Criteria.where("fireType").is(param.getFireType()));
} //障碍区
if(param.getObstacleId() != null){
query.addCriteria(Criteria.where("obstacleId").is(param.getObstacleId()));
} //墙面
if(!StringUtils.isEmpty(param.getWallFinish())){
query.addCriteria(Criteria.where("wallFinish").is(param.getWallFinish()));
} //观察点
if(param.getObPointId() != null){
query.addCriteria(Criteria.where("obPointId").is(param.getObPointId()));
} //天气
if (param.getClimateId() != null) {
query.addCriteria(Criteria.where("climateId").is(param.getClimateId()));
} return query;
}

查询方法

@Override
public String getReportContour(ReportParam param) { Query query = this.getQuery(param); List<Contour> contours = this.mongoTemplate.find(query, Contour.class); List<JSONObject> resultList = Lists.newArrayList();
if(!com.alibaba.excel.util.CollectionUtils.isEmpty(contours)){
resultList = contours.stream()
.map(curve -> {
if(!com.alibaba.excel.util.StringUtils.isEmpty(curve.getContent())){
JSONObject jsonObject = JSONObject.parseObject(curve.getContent());
return jsonObject;
}
return null;
})
.filter(Objects::nonNull)
.collect(Collectors.toList());
return JSONObject.toJSONString(resultList);
} return null;
}

mongoTemplate 条件查询的更多相关文章

  1. MongoTemplate复合条件查询

    分. 排序.按时间查询 Query query = new Query();        //必须条件        Criteria c = Criteria.where("VINID& ...

  2. SpringBoot之MongoTemplate的查询可以怎么耍

    学习一个新的数据库,一般怎么下手呢?基本的CURD没跑了,当可以熟练的增.删.改.查一个数据库时,可以说对这个数据库算是入门了,如果需要更进一步的话,就需要了解下数据库的特性,比如索引.事物.锁.分布 ...

  3. java中mongo的条件查询

    @Override public Page<ProductInfo> findAll(Pageable pageable, ProductInfo productInfo) { //创建一 ...

  4. MongoDBTemplate多条件查询的问题

    问题: 在使用Spring Data MongoDB 进行条件查询数据时,发现条件判断不起作用,结果会返回所有的数据. Criteria criteria = new Criteria(); crit ...

  5. jqGrid jqGrid分页参数+条件查询

    HTML <div class="row"> <div class="col-sm-20"> <form id="for ...

  6. Rafy 中的 Linq 查询支持(根据聚合子条件查询聚合父)

    为了提高开发者的易用性,Rafy 领域实体框架在很早开始就已经支持使用 Linq 语法来查询实体了.但是只支持了一些简单的.常用的条件查询,支持的力度很有限.特别是遇到对聚合对象的查询时,就不能再使用 ...

  7. Oracle学习总结_day03_day04_条件查询_排序_函数_子查询

    本文为博主辛苦总结,希望自己以后返回来看的时候理解更深刻,也希望可以起到帮助初学者的作用. 转载请注明 出自 : luogg的博客园 谢谢配合! day03_条件查询_排序_函数 清空回收站: PUR ...

  8. [NHibernate]条件查询Criteria Query

    目录 写在前面 文档与系列文章 条件查询 一个例子 总结 写在前面 上篇文章介绍了HQL查询,我个人觉得使用ORM框架就是为了让少些sql,提高开发效率,而再使用HQL就好像还是使用sql,就觉得有点 ...

  9. PHP-----练习-------租房子-----增删改查,多条件查询

    练习-------租房子-----增删改查,多条件 一 .题目要求: 二 .做法: [1]建立数据库 [2]封装类文件------DBDA.class.php <?php class DBDA ...

随机推荐

  1. wireshark 调试 https/http2和grpc流量

    本文浏览器以 Chrom 为例 平常需要抓包的场景比较少,记录一下防止下次忘记配置 1. 解析 TLS 在本地创建用于保存 ssl logfile 的文件(文件可以存放到任意位置), 并添加到环境变量 ...

  2. Mongo基于Java基本操作

    1.使用Maven依赖相应jar <dependency> <groupId>org.mongodb</groupId> <artifactId>mon ...

  3. python import 导入两个模块同时有同一名称的方法如何调用 ?

    from moudule import *(这种方法不推荐) 一般不推荐使用"from 模块 import"这种语法导入指定模块内的所有成员,因为它存在潜在的风险. 比如同时导入 ...

  4. python 遍历字典中的键和值

    #遍历字典中的所有键和值 zd1={"姓名":"张三","年龄":20,"性别":"女"} zd2= ...

  5. python sqlite3 类

    import sys import os import sqlite3 ##sys.path.append(os.path.abspath(os.path.dirname(__file__) + '/ ...

  6. MySQL中的redo log和undo log

    MySQL中的redo log和undo log MySQL日志系统中最重要的日志为重做日志redo log和归档日志bin log,后者为MySQL Server层的日志,前者为InnoDB存储引擎 ...

  7. Python在ubuntu16.04上环境搭建

    1.anaconda3安装 mkdir anaconda cd anaconda wget https://repo.continuum.io/archive/Anaconda3-4.4.0-Linu ...

  8. HTTP协议GET方法传参最大长度理解误区

    结论 HTTP 协议未规定GET和POST的长度 GET的最大长度是因为浏览器和WEB服务器显示了URI的长度 不同浏览器和WEB服务器,限制的最大长度不同 若要支持IE,则最大长度为2083 byt ...

  9. jvm源码解读--02 Array<u1>* tags = MetadataFactory::new_writeable_array<u1>(loader_data, length, 0, CHECK_NULL); 函数引入的jvm内存分配解析

    current路径: #0 Array<unsigned char>::operator new (size=8, loader_data=0x7fd4c802e868, length=8 ...

  10. 如何使用SQL Server实现SignalR的横向扩展

    一般来说,Web应用的扩展有两种:scale up(纵向扩展)和scale out(横向扩展). 1.纵向扩展 使用配置高(大内存,多处理器)的服务器或者虚拟机. 2.横向扩展 使用多个服务器(Web ...