Java使用MongoTemplate操作MangoDB,实现根据时间等条件组合查询,解决ISODate的问题
Java和Mongo中的Date比较
Java中的Date:“createTime” : “2018-09-13 14:04:05”),
MongoDB中的Date: “createTime” : ISODate(“2018-09-13T14:04:05.268Z”),
MongoDB中的日期格式 是 UTC 通用标准,格式为"yyyy-MM-dd HH![:mm:](https://www.webpagefx.com/tools/emoji-cheat-sheet/graphics/emojis/mm.png)ss.000'Z'"
。
该时间比中国北京时间晚了8个小时,即·ISODate("2018-09-13T14:04:05.268Z")
相当于北京时间2018-09-13 06:04:05.268
因为mongo中的Date类型以UTC(Coordinated Universal Time)存储,就等于GMT(格林尼治标准时)时间。而系统时间使用的是GMT+0800时间,两者正好相差8个小时。
MongoDB条件表达式
表达式 | 含义 |
---|---|
$gt | > |
$gte | >= |
$eq | = |
$ne | != |
$lt | < |
$lte | <= |
$in | in(后面的值为bson对象数组) |
$nin | not in(后面的值为bson对象数组) |
Maven依赖
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
实现方式:
String starttime = String.valueOf(params.get("starttime"));
String endtime = String.valueOf(params.get("endtime"));
Query query = new Query();
Criteria criteria = new Criteria();
//设置查询条件
criteria.and("companyId").is(datum.getCompanyId());
criteria.and("createUser").is(datum.getUserId());
criteria.and("type").is(3);
//设置查询时间范围
criteria.and("createTime").gte(DateUtils.dateToISODate(startTime)).lte(DateUtils.dateToISODate(endTime));
query.addCriteria(criteria);
List<CustomerFormDataEntity> customerFormDataEntities = mongoTemplate.find(query, CustomerFormDataEntity.class);
mongo中查询实现方式:
// Requires official MongoShell 3.6+
db = db.getSiblingDB("im_customer");
db.getCollection("customer_form_data").find({ "type" : 3.0, "createUser" : 6264.0, "companyId" : 97.0, "createTime" : { "$gte" : ISODate("2022-05-24T00:00:00.000+0000"), "$lte" : ISODate("2022-05-24T23:59:59.000+0000")}}
);
ISODate转换方法
package net.commchina.im.common.utils;import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.SimpleTimeZone;/*** <p>* DateUtils** @program: * @description:* @author: Mr.Nanke* @create: 2022-05-25 19:16**/
public class DateUtils {/** * mongo 日期查询isodate * @param dateStr * @return */public static Date dateToISODate(String dateStr){//T代表后面跟着时间,Z代表UTC统一时间Date date = formatD(dateStr);SimpleDateFormat format =new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");format.setCalendar(new GregorianCalendar(new SimpleTimeZone(0, "GMT")));String isoDate = format.format(date);try {return format.parse(isoDate);} catch (ParseException e) {e.printStackTrace();}return null;}/** 时间格式(yyyy-MM-dd HH:mm:ss) */public final static String DATE_TIME_PATTERN = "yyyy-MM-dd HH:mm:ss";public static Date formatD(String dateStr){return formatD(dateStr,DATE_TIME_PATTERN);}public static Date formatD(String dateStr ,String format) {SimpleDateFormat simpleDateFormat = new SimpleDateFormat(format);Date ret = null ;try {ret = simpleDateFormat.parse(dateStr) ;} catch (ParseException e) {//}return ret;}
}
Java使用MongoTemplate操作MangoDB,实现根据时间等条件组合查询,解决ISODate的问题相关推荐
- ElasticSearch实现高亮、范围查询和多条件组合查询(java和kibana)
ElasticSearch客户端配置参考之前的博客 1.高亮 高亮的本质其实是将搜索结果中需要高亮的字段进行替换 public List<Map<String,Object>> ...
- 《MySQL数据操作与查询》- 维护学生信息、老师信息和成绩信息 支持按多种条件组合查询学生信息和成绩信息
综合项目需求 一.系统整体功能 系统需支持以下功能: 维护学生信息.老师信息和成绩信息 支持按多种条件组合查询学生信息和成绩信息 学生 Student(id,班级id,学号,姓名,性别,电话,地址,出 ...
- java多条件组合查询6_elasticsearch组合多条件查询实现restful api以及java代码实现
elasticsearch组合多条件查询实现restful api以及java代码实现 实际开发中,基本都是组合多条件查询. elasticsearch提供bool来实现这种需求: 主要参数: mus ...
- java的日期操作_java中对时间的操作详解
代码演示: //数据库中去的日期 Date s = list.get(0).getSdate(); System.out.println(s);// Tue Apr 28 00:00:00 CST 2 ...
- pc(电脑)用java通过adb操作android手机发短信及中文乱码解决
最近想用java调用android手机的短信功能.已开始用一下方法实现: adb -s emulator-5554 shell am start -a android.intent.action.SE ...
- java使用mangodb进行多条件组合查询
and or组合查询 构造BasicDBObject BasicDBList andList = new BasicDBList();BasicDBObject groupCond = new Bas ...
- java easyui条件组合查询_EasyUi+Spring Data 实现按条件分页查询
Spring data 介绍 Spring data 出现目的 为了简化.统一 持久层 各种实现技术 API ,所以 spring data 提供一套标准 API 和 不同持久层整合技术实现 . 自己 ...
- mybatisPlus根据起止时间作为条件进行查询
背景 查询当天凌晨0.00 到当前时间的数据 代码 SimpleDateFormat wrapperSdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm ...
- Java 使用 POI 操作 Excel
Apache POI 基本介绍 Apache POI 是 Apache 软件基金会提供的 100% 开源库.支持 Excel 库的所有基本功能. 图片来源:易百教程 基本概念 在 POI 中,Work ...
最新文章
- UTF-8与UTF-8 BOM
- Github标星2w+,热榜第一,如何用Python实现所有算法
- webpack ,gulp
- Message Decoding密码翻译
- springboot和quartz整合实现动态定时任务(持久化单节点)
- nodejs实践录:我的nodejs编码风格
- vSAN架构解析与6.7功能介绍
- 如何在 Mac 上使用“接力”回到上次离开的地方?
- 图解设计模式(23种)
- PMP试题 | 每日一练,快速提分
- 易撰微信编辑器使用指南!
- 传媒《财务管理》课程考试作业考核试题
- standard-version(发版与 Changelog 自动化)
- QGraphicsView制作绘制图元工具资料整理(鼠标、平移、缩放)
- 递归函数--猴子摘桃问题的解题思路
- uniapp团购商城源码在哪里下载?
- js汉字转拼音首字母
- 如何修复SSD硬盘,如何给SanDisk SSD开卡
- 英语口语学习(03-06)
- 特征函数和概率密度函数的关系