springboot使用MongoTemplate根据正则表达式查询日期数据

news2024/11/28 20:33:49

 一、日期正则表达式测试

  • 匹配HH:mm:ss正则表达式写法有很多列举两个

.(点)代表任意匹配

^开头必须是跟着的

: 精确匹配,必须是:

([0-1]?[0-9]|2[0-3]).([0-5][0-9]).([0-5][0-9])

^([0-1]?[0-9]|2[0-3]).([0-5][0-9]).([0-5][0-9])$
([0-1]?[0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])

public class RegexDemo {
    public static void main(String[] args) {
        String str = "2023-10-10 00:00:00";
        String regex1 ="^\\d{4}-\\d{2}-\\d{2}.([0-1]?[0-9]|2[0-3]).([0-5][0-9]).([0-5][0-9])$";
        Pattern p = Pattern.compile(regex1);
        Matcher m = p.matcher(str);
        boolean flag = m.matches();
        System.out.println("yyyy-MM-dd HH:mm:ss格式正则表达式测试" + flag);
        String regex2 ="^\\d{4}-\\d{2}-\\d{2}.\\d{2}:\\d{2}:\\d{2}$";
        Pattern p2 = Pattern.compile(regex2);
        Matcher m2 = p2.matcher(str);
        boolean flag2 = m2.matches();
        System.out.println("yyyy-MM-dd HH:mm:ss忽略时分秒" + flag2);
        String regex3 ="^2023-10-10 \\d{2}:\\d{2}:\\d{2}$";
        Pattern p3 = Pattern.compile(regex3);
        Matcher m3 = p3.matcher(str);
        boolean flag3 = m3.matches();
        System.out.println("yyyy-MM-dd HH:mm:ss忽略时分秒精确匹配" + flag3);
    }
}

二、Mongo正则查询与条件查询对比 

    @Resource
    private MongoTemplate mongoTemplate;

    @Test
    public void compareRegexToEquals() {
        String str ="^"+"2023-10-07"+".\\d{2}:\\d{2}:\\d{2}$";
        Pattern pattern = Pattern.compile(str, Pattern.CASE_INSENSITIVE);
        List<Map> maps = mongoTemplate.find(new Query(Criteria.where("updateTime").regex(pattern))
                        .with(Sort.by(
                                Sort.Order.asc("updateTime")
                        )),
                Map.class, "tbopen_shop_uuid");
        System.out.println("正则表达式查询数据=========================" + maps.size()  );
        maps = maps.stream().limit(5).collect(Collectors.toList());
        maps.forEach(System.out::println);
        String startTime = "2023-10-07 00:00:00";
        String endTime = "2023-10-07 23:59:59";
        List<Map> shop = mongoTemplate.find(new Query(Criteria.where("updateTime").gte(startTime).lte(endTime))
                        .with(Sort.by(
                                Sort.Order.asc("updateTime")
                        )),
                Map.class, "tbopen_shop_uuid");
        System.out.println("使用条件查询数据=========================" + shop.size());
        shop = maps.stream().limit(5).collect(Collectors.toList());
        shop.forEach(System.out::println);
    }

我这里这查询了一天的测试数据,比对结果后发现两种查询结果是一致的,取了前五条数据做对比,

突然发现正则还是挺牛的!

之后我们取每天的值进行字符串拼接则可以实现分组统计的需求了.

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1216096.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【机器学习9】前馈神经网络

深度前馈网络是一类网络模型的统称&#xff0c;主要包括多层感知机、 自编码器、限制玻尔兹曼机&#xff0c; 以及卷积神经网络等。 1 激活函数 激活函数及对应导函数图其它Sigmoid 导数 在z很大或很小时都会趋近于0&#xff0c; 造成梯度消失的现象Tanh 其导数在z很大或很小…

Python接口自动化(什么是接口、接口优势、类型)

简介 经常听别人说接口测试&#xff0c;接口测试自动化&#xff0c;但是你对接口&#xff0c;有多少了解和认识&#xff0c;知道什么是接口吗&#xff1f;它是用来做什么的&#xff0c;测试时候要注意什么&#xff1f;坦白的说&#xff0c;笔者之前也不是很清楚。接下来先看一下…

模拟实现一个Linux中的简单版shell

exec系列接口中的环境变量 在之前我们学习了exec系类函数的功能就是将一个程序替换成另外一个程序。 然后就会出现下面的问题&#xff1a; 首先父进程对应的环境变量的信息是从bash中来的&#xff0c;因为我们自己写的父进程在运行的时候首先就要成为bash的子进程。这里我们将…

解决计算机丢失msvcr71.dll问题,总结5种解决方法分享

由于各种原因&#xff0c;计算机在使用的过程中可能会出现一些问题&#xff0c;其中之一就是丢失msvcr71.dll文件。这个问题可能会导致计算机无法正常运行某些程序或功能&#xff0c;给我们的生活和工作带来困扰。那么&#xff0c;当我们遇到这个问题时&#xff0c;应该如何解决…

福利来了,运营素材免费下载

各位运营的小伙伴&#xff0c;是不是在日常工作中常常用到这种场景&#xff1a;公司要做一个活动&#xff0c;老板让你写一个活动SOP&#xff0c;但是没有过往经验&#xff0c;一时无从下手&#xff0c;老板又死催。 自己想了解拉新的办法&#xff0c;但是一时找不到资料&…

双十一快递业务量暴增,快递驿站视频智能监控方案保障快递业务顺利开展

一、背景分析 虽然刚刚过去的双十一电商购物狂潮结束&#xff0c;但是快递业务量仍处在高峰期。据数据统计&#xff0c;今年全国邮政快递企业在11月11日当天共揽收快递包裹6.39亿件&#xff0c;是平日业务量的1.87倍&#xff0c;同比增长15.76%。随着电商购物节的不断增多&…

【Qt之QWizardPage】使用

介绍 QWizardPage类是向导页面的基类。 QWizard表示一个向导。每个页面都是一个QWizardPage。当创建自己的向导时&#xff0c;可以直接使用QWizardPage&#xff0c;也可以子类化它以获得更多控制。 页面具有以下属性&#xff0c;由QWizard呈现&#xff1a;a title&#xff0c;…

易点易动库存管理系统:革新企业库存管理,降本增效

在快速变化的市场环境中&#xff0c;企业面临着库存管理的巨大挑战。传统的库存管理方式耗时耗力&#xff0c;且常常因为信息滞后、数据不精确而导致库存积压或短缺。易点易动库存管理系统&#xff08;以下简称“易点易动”&#xff09;的出现&#xff0c;标志着企业库存管理进…

前端性能优化的方式

文章目录 前言DNS 预解析存储使用 HTTP / 2.0预加载预渲染懒执行与懒加载文件优化webpack优化如何根据chrome的timing优化移动端优化后言 前言 hello world欢迎来到前端的新世界 &#x1f61c;当前文章系列专栏&#xff1a;前端系列文章 &#x1f431;‍&#x1f453;博主在前端…

Linux进程之进程的状态简述

文章目录 1.百度搜索2.对进程状态的认识2.0创建状态2.1就绪状态2.2运行状态2.3阻塞状态2.4挂起状态 3.认识LinuxOS下的进程3.0进程状态的简述3.1了解R/S状态3.2D深度睡眠状态3.3信号/调试暂停状态3.4僵尸状态 1.百度搜索 2.对进程状态的认识 一个进程所具有的状态为操作系统的…

demo(三)eurekaribbonhystrix----服务降级熔断

一、介绍&#xff1a; 1、雪崩&#xff1a; 多个微服务之间调用的时候&#xff0c;假如微服务A调用微服务B和微服务C&#xff0c;微服务B和微服务C又调用其他的微服务&#xff0c;这就是所谓的"扇出"。如果扇出的链路上某个微服务的调用响应的时间过长或者不可用&am…

开发者的第一台服务器 ECS云服务器低至99元:新老同享

“阿里云始终围绕‘稳定、安全、性能、成本、弹性’的目标不断创新&#xff0c;为客户创造业务价值。”10月31日&#xff0c;杭州云栖大会上&#xff0c;阿里云弹性计算计算产品线负责人张献涛表示&#xff0c;通过持续的产品和技术创新&#xff0c;阿里云发布了HPC优化实例等多…

Kubernetes(k8s)进阶

文章目录 Kubernetes进阶一、Namespace&#xff08;名称空间&#xff09;1.namespace介绍2.管理namespace查看namespace创建namespaceyaml文件配置namespace 二、Pod&#xff08;最小基本部署单元&#xff09;1.pod介绍2.管理pod创建并运行pod查看pod信息访问pod删除podyaml文件…

如何分析伦敦金的价格走势预测?

伦敦金作为国际黄金市场的重要指标&#xff0c;其价格走势一直备受投资者关注。但是&#xff0c;黄金市场的价格变化受到多种因素的影响&#xff0c;因此要准确预测伦敦金的价格走势并非易事。在本文中&#xff0c;将介绍一些常用的方法和工具&#xff0c;帮助您分析伦敦金的价…

挖掘PostgreSQL事务的“中间态”----更加严谨的数据一致性?

1.问题 今天在上班途中&#xff0c;中心的妹纸突然找我&#xff0c;非常温柔的找我帮忙看个数据库的报错。当然以我的性格&#xff0c;妹子找我的事情对我来说优先级肯定是最高的&#xff0c;所以立马放下手中的“小事”&#xff0c;转身向妹子走去。具体是一个什么样的问题呢…

vue部署之后提示用户更新的两种方式(http请求和worker线程请求)

const { writeFile, mkdir, existsSync } require(fs) // 动态生成版本号 const createVersion () > {// mkdir(./dist, { recursive: true }, (err) > {//检测dist目录是否存在if (existsSync(./dist)) {writeFile(./dist/version.json, {"version":"$…

【vue】0到1的常规vue3项目起步

创建项目并整理目录 npm init vuelatestjsconfig.json配置别名路径 配置别名路径可以在写代码时联想提示路径 {"compilerOptions" : {"baseUrl" : "./","paths" : {"/*":["src/*"]}} }elementPlus引入 1. 安装e…

新增文件收藏夹、回收站、终端等功能,1Panel开源面板v1.8.0发布

2023年11月13日&#xff0c;现代化、开源的Linux服务器运维管理面板1Panel正式发布v1.8.0版本。 在这一版本中&#xff0c;1Panel新增文件收藏夹、回收站、终端功能&#xff0c;面板设置时支持设置面板监听地址。此外&#xff0c;1Panel开源项目组还进行了60多项功能更新和问题…

ICCV 23丨3D-VisTA:用于 3D 视觉和文本对齐的预训练Transformer

来源&#xff1a;投稿 作者&#xff1a;橡皮 编辑&#xff1a;学姐 论文链接&#xff1a;https://arxiv.org/abs/2308.04352 开源代码&#xff1a;http://3d-vista.github.io 摘要&#xff1a; 3D视觉语言标定&#xff08;3D-VL&#xff09;是一个新兴领域&#xff0c;旨在将…

《C++避坑神器·十八》运算符重载,小白也能看懂

对已有的运算符重新进行定义&#xff0c;赋予其另一种功能&#xff0c;以适应不同的数据类型 1、对于号运算符没有类 类 类&#xff0c;现在要给号赋予对象可以相加的功能 &#xff08;1&#xff09;成员函数重载号运算符 &#xff08;2&#xff09;全局函数重载号运算符 …