MongoTemplate复合条件查询
分、 排序、按时间查询
Query query = new Query();
//必须条件
Criteria c = Criteria.where("VINID").is(Map.get(vin));
//范围条件
if(!StringUtils.isEmpty(start)&&StringUtils.isEmpty(end)){
c.and("TIME1").gte(GetTime1(start));
}else if(StringUtils.isEmpty(start)&&!StringUtils.isEmpty(end)){
c.and("TIME1").lte(GetTime1(end));
}else if(!StringUtils.isEmpty(start)&&!StringUtils.isEmpty(end)){
//对同一个属性加两次限制需这样操作
c.andOperator(
c.where("TIME1").gte(GetTime1(start)),
c.where("TIME1").lte(GetTime1(end))
);
}
query.addCriteria(c);
//总数
num = (int) mongoTemplate.count(query,CarDataEx.class,"jmevTest");
System.out.println("总数:"+num);
ht.put("total", num);
//分页
query.skip((page-1)*rows).limit(rows);
//排序
query.with(new Sort(Sort.Direction.DESC,"TIME1"));
//query.with(new Sort(properties));
rst = mongoTemplate.find(query,CarDataEx.class,"jmevTest");
二分组查询
public Page<CourseDetail> listCourseDetails(QueryCourseDetailModel queryModel) {
//条件一 where gradeId in (集合) and mark=true
Criteria criteria = Criteria.where("gradeId").in(gradeIds).and("mark").is(true);
if (null != status && status.size() > 0) {
Criteria criteriaChild = new Criteria();
//条件二 criteriaChild 条件查询 ( teacherCommentStatus = XX or parentsReplyTeacherStatus =XX )
criteriaChild.orOperator(Criteria.where("teacherCommentStatus").in(status), Criteria.where("parentsReplyTeacherStatus").is(replayStatus));
}
//拼接最后语句 where gradeId in (集合) and mark=true and ( teacherCommentStatus = XX or parentsReplyTeacherStatus =XX )
criteria.andOperator(criteriaChild);
//分组条件
GroupBy groupBy = new GroupBy("gradeId")
.initialDocument("{ count: 0 }")
.reduceFunction("function (doc,pre){pre.count +=1 ;}");
//使用 mongoTemplate.group 分组查询
GroupByResults groupByResults = mongoTemplate.
group(criteria, "homework", groupBy, Homework.class);
//获取结果
BasicDBList list = (BasicDBList) groupByResults.getRawResults().get("retval");
list.stream().map(map -> {
BasicDBObject obj = (BasicDBObject) map;
......
return obj;
}).collect(Collectors.toList());
return list;
}
MongoTemplate复合条件查询的更多相关文章
- Linq和EF 做 单一条件查询 和 复合条件 查询 以及 多表 联合查询 示例
单一条件查询: var table2Object = (from t1 in db.table1 join t2 in db.table2 on t1.id equals t2.id select t ...
- mysql——多表——外连接查询——左连接、右连接、复合条件查询
), d_id ), name ), age ), sex ), homeadd ) ); ,,,'nan','beijing'); ,,,'nv','hunan'); ,,,'nan','jiang ...
- lucene复合条件查询案例——查询name域 或 description域 包含lucene关键字的两种方式
方式一:使用语法表达式查询 //查询name域 或 description域包含lucene关键字 QueryParser queryParser = new QueryParser("na ...
- MongoTemplate 分组分页复合条件查询
一.前言 最近项目使用MongoDB作为数据主要存取的地方 又是第一次接触MongoDB,也是踩了不少坑... 维护数据无非就是增删改查,而里面最复杂的就是查询了 所以来总结一下有关MongoDB的查 ...
- Mybatis中的复合条件查询
1.Map中根据字段名存儲: 定义接口:List<Student> selectByCondition1(Map<String,Object> map); 映射文件: < ...
- util-C# 复杂条件查询(sql 复杂条件查询)查询解决方案
ylbtech-funcation-util: C# 复杂条件查询(sql 复杂条件查询)查询解决方案 C# 复杂条件查询(sql 复杂条件查询)查询解决方案 1.A,Ylbtech.Model返回 ...
- 《Entity Framework 6 Recipes》中文翻译系列 (35) ------ 第六章 继承与建模高级应用之TPH继承映射中使用复合条件
翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 6-11 TPH继承映射中使用复合条件 问题 你想使用TPH为一张表建模,建模中使 ...
- HBase高性能复杂条件查询引擎
转自:http://blog.csdn.net/bluishglc/article/details/31799255 mark 写在前面 本文2014年7月份发表于InfoQ,HBase的PMC成员T ...
- jpa多条件查询重写Specification的toPredicate方法(转)
Spring Data JPA支持JPA2.0的Criteria查询,相应的接口是JpaSpecificationExecutor.Criteria 查询:是一种类型安全和更面向对象的查询 . 这个接 ...
随机推荐
- js内存空间详细图解-笔记
原文参考http://mp.weixin.qq.com/s/NGqdjhoU3MR9LD0yH6tKIw 栈-先进后出堆-类比成书于书架(形象),只要知道Key就可以找到value 基础数据类型(Un ...
- cnpm 安装
国内npm 安装比较慢,可选择cnpm npm install -g cnpm --registry=https://registry.npm.taobao.org
- 树莓派搭建web服务器(详细且良心)
安装Apache Apache服务器可以从Debian的源中下载.可以用apt下载. 首先要更新apt的软件列表.如果不运行sudo apt-get updata的话,apt软件就不知道有没有新的软件 ...
- Android分享图文到朋友圈代码。
分享到微信朋友圈代码.不好用,最后选择了shareSdk. private static void shareToTimeLine(File file) { Intent intent = new I ...
- Kibana基本使用
现在你已经安装了Kibana,现在你一步步通过本教程快速获取Kibana核心功能的实践经验.学习完本教程,你将: 1.加载案例数据到你安装的Elasticsearch中 2. 定义至少一个索引匹配模式 ...
- Linux 服务器性能问题排查思路
一个基于 Linux 操作系统的服务器运行的同时,也会表征出各种各样参数信息.通常来说运维人员.系统管理员会对这些数据会极为敏感,但是这些参数对于开发者来说也十分重要,尤其当你的程序非正常工作的时候, ...
- flashback回收站知识汇总
查看回收站是否开启:SELECT Value FROM V$parameter WHERE Name = 'recyclebin'; 查看回收站中的数据:SELECT * FROM DBA_RECYC ...
- .net 流(Stream) - StreamWriter和StreamReader、BinaryReader和BinaryWriter
转自:http://www.oseye.net/user/kevin/blog/86 一.StreamWriter和StreamReader 从上一篇博文可知文件流.内存流和网络流操作的都是字节,每次 ...
- [原]零基础学习SDL开发之在Android使用SDL2.0显示BMP叠加图
关于如何移植在android上使用SDL,可以参考[原]零基础学习SDL开发之移植SDL2.0到Android 和 [原]零基础学习SDL开发之在Android使用SDL2.0显示BMP图 . 在一篇 ...
- MongoDB索引管理
一.创建索引 创建索引使用db.collectionName.ensureIndex(...)方法进行创建: 语法: >db.COLLECTION_NAME.ensureIndex({KEY:1 ...