spring boot MongoTemplate如何 对 mongodb 进行模糊查询

SpringBoot 整合 MongoDB:高级查询篇 上一篇文章,我们讲了如何使用 SpringBoot 整合 MongoDB 实现简单的 CRUD。本文将带你深入了解如何使用 Spring Data MongoDB 执行高级查询,Spring Data MongoDB 为操作 MongoDB 数据库提供了强大的支持,简化了数据访问层的开发工作,接下来我们将结合实际案例,逐步讲解如何构建灵活的查询语句。 阅读详情

以下为部分代码片段,供参考。

1: 代码片段1,用Pattern方式来实现 不区分大小写的匹配(包括精确和模糊匹配)

//完全匹配
Pattern pattern = Pattern.compile("^张$", Pattern.CASE_INSENSITIVE);
//右匹配
Pattern pattern = Pattern.compile("^.*张$", Pattern.CASE_INSENSITIVE);
//左匹配
Pattern pattern = Pattern.compile("^张.*$", Pattern.CASE_INSENSITIVE);
//模糊匹配
Pattern pattern = Pattern.compile("^.*张.*$", Pattern.CASE_INSENSITIVE);
Query query = Query.query(Criteria.where(fieldName).regex(pattern));  
List<SimpleUserInfo> users = mongoTemplate.find(query, SimpleUserInfo.class, classname);
return users;

2、对查询字符串转义,以处理输入为regex的特定字符(同时允许输入以数字开头的模糊查询)。

代码片段A:

//regex对输入特殊字符转义

String escapeExprSpecialWord(String keyword) {

if (StringUtils.isNotBlank(keyword)) {

String[] fbsArr = { "\\", "$", "(", ")", "*", "+", ".", "[", "]", "?", "^", "{", "}", "|" };

for (String key : fbsArr) {

if (keyword.contains(key)) {
  keyword = keyword.replace(key, "\\" + key);
    }
  }
}

 return keyword;
}

以下部分为controller及repository两部分核心代码,在controller中将查询条件拼装成 SpringBoot MongoTemplate的Criteria对象 

给service\repository处理。

代码片段B:,criteria对象就是实现对filed1 和 filed2的模糊匹配

//m.get("parma1")为前端传入参数param1

Pattern pattern = Pattern.compile(".*?" + escapeExprSpecialWord(m.get("field1").toString()) + ".*");

Criteria criteria=Criteria.where("field1").regex(pattern);

pattern = Pattern.compile(".*?" + escapeExprSpecialWord(m.get("field2").toString()) + ".*");

criteria.and("field2").regex(pattern);

3. 对于子查询elemmatch的处理

查询各文章一直都未成功,不知道怎么回事,我是采用以下方式解决:

  • 映射类中按collection结构设置,对子集不要设置为map而是设置子类

  • 查询中直接使用a.b即可查询

例:collection结构为{id:XXX,content:XXX,project:{id:XXX,name:XXX}}

代码片段如下:

public class Ticket extends BaseEntity implements java.io.Serializable {

@Id

private String id;

private String content;

private Project project; //定义Project类以匹配collection中的project字段

……

}

 

class Location{

long id;

String name;

}

 

//查询project.id=1的记录

Criteria.where("project.id").is(1);

//查询project.name包含武汉的记录

Criteria.where("project.name").regex(".*?武汉.*"); //如从前端获取有特定字符的查询条件或以数字开头的查询条件请使用前面说的转义方法处理

 

Mongodb操作与Java(四)MongoTemplate的使用 MongoTemplate的使用 阅读详情

相关推荐

【数据库】Java 集成mongodb— MongoTemplate 详解

`MongoTemplate` 是 Spring Data MongoDB 提供的核心类,用于简化与 MongoDB 数据库的交互。它封装了许多常见的数据库操作,使开发者能够轻松执行 CRUD(创建、读取、更新、删除)操作,处理复杂查询和聚合等。本文将详细介绍 `MongoTemplate` 的功能、使用方法、配置步骤以及一些实际示例。

颜淡慕潇 1万+

MongoTemplate的基本使用方法

1、MongoDB简介 MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。 MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的,它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。 MongoDB最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。 2、

a1120467800的博客 4万+

详解从无人机倾斜实景三维建模→模型修复→成果网络发布展示分享全流程

1、倾斜实景三维建模软件:CC(Smart3D)软件2、实景三维模型网页在线发布展示、分享平台:图新地球网页端(Wish3D·Earth平台)图新地球网页端(Wish3D·Earth平台)是基于 WebGL技术研发的国产实景三维模型Web端发布展示平台,可实现TB级倾斜实景三维数据快速加载,支持多种格式的三维模型,如OSGB实景模型、OBJ人工模型、SKP人工模型、RVT格式BIM模型等,同时支持模型单体化、三维模型测量分析、水面特效、日照分析等特殊效果呈现,此外也可以根据您的需要进行本地化部署级功能定制。

GISWorld3D的博客 4377

MongoTemplate增删改查,分页查询,去重查询,全表删除

MongoTemplate增删改查,分页查询,去重查询,全表删除

Ciel_Y的博客 1万+

从POI兴趣点获取到ArcGIS中热力图制作

1. POI获取及坐标点转换 POI获取我们要借助下面这个网站↓↓↓ 规划云http://guihuayun.com/poi/ 搜索POI兴趣点并复制兴趣点, 图 新建txt文本文档,粘贴兴趣点 图片 查看后得知,lng为横坐标,lat为纵坐标 文件,另存为csv格式文件,编码为utf—8 打开QGIS,因为我们pol点是从百度地图上获取的,为BD09坐标系,与WGS84有一定偏移【GCJ02:火星坐标系,是由中国国家测绘局制订的地理信息系统的坐标系统。由WGS84坐标系经加密后的坐标系。 BD09:为.

qq_43173805的博客 5598

Jetson平台XDMA PCIe驱动安装与测试全指南

本文提供了一份在NVIDIA Jetson平台上安装与测试Xilinx FPGA XDMA PCIe驱动的完整指南。详细阐述了驱动作为高速DMA引擎的核心作用,并逐步讲解了从环境准备、驱动编译、内核模块加载到实际数据传输测试的全过程。内容涵盖常见问题排查与性能优化建议,帮助开发者实现Jetson与FPGA间的高速数据通信,适用于自动驾驶、工业视觉等需要异构计算的应用场景。

weixin_29196315的博客 527

MongoDB基础学习(五)之在Springboot项目使用MongoTemplate进行操作

Springboot项目使用MongoTemplate进行操作

weixin_53998054的博客 1576

避坑指南:Windows下OpenCV摄像头索引混乱问题的3种解决之道

本文详细解析了Windows下OpenCV摄像头索引混乱问题的3种解决方案,包括GUID查询法、DirectShow接口集成和注册表固化技术。针对工业视觉和智能监控场景,提供实战代码和性能优化建议,帮助开发者稳定识别多路摄像头设备,有效解决VideoCapture接口的索引漂移问题。

weixin_30836759的博客 406

springboot整合MongoDB 简单的操作(MongoTemplate)、添加数据、查询数据、条件查询、模糊查询、分页查询。

1.创建springboot项目引入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId> </dependency> <dependency> <groupId>

weixin_53472653的博客 6893

2022中山大学计算机技术专硕考研初试、复试经验帖

个人简介 推荐几个我自己感觉对考研非常有帮助的小助手吧。可以帮助节省时间! 考研时间规划总览 初试篇 数学 英语 政治 408 复试篇 机试 笔试 面试 关于选导师 个人感言

zik的博客 1万+

LoRA 完整解析:从理论到实践

LoRA(低秩适应)是一种高效的大模型微调方法,通过添加少量可训练参数(低秩矩阵)来适配新任务,避免全参数微调的高成本。其核心是将权重更新ΔW分解为两个小矩阵B×A的乘积,大幅减少训练参数量(仅0.1-1%)。LoRA基于内在维度假设,通过低秩约束捕捉核心任务信息,兼具效率与效果。实际应用中,常用配置为秩r=16-32,目标模块选择注意力层的q_proj和v_proj,学习率比全参数微调大10倍(约1e-4)。优势包括参数高效(内存降低60-80%)、多任务适配灵活、保留预训练知识等,已成为大模型微调的主流

echo的博客 1412

SpringBoot集成MongoDB之MongoTemplate

spring-data-mongodb提供了两种方式访问mongodb。 本章主要介绍“MongoTemplate”的操作 pom.xml <!--mongodb--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb

weixin_42806958的博客 919

S32K324 Stack异常分析及解决方案

在项目开发过程中,在一次软件变更时,调整了task优先级之后导致应用层软件中的float数据经常性的变为NAN,导致应用层功能失效。本文记录下这个bug的分析及解决过程。该问题排查了好几天,最开始正向排查不出来,差点放弃了,ETAS OS也没有人支持,只能换一种思路,通过反向推,最终定位到问题,能完美解决,还是很欣慰的。遇到问题不可怕,Bug一直都会有,主要是在解决问题中的思路和方法,不断总结积累,总会越来越好的!

赞的博客 598

springboot+mongodb 实现增删改查

springboot+mongodb 实现增删改查

shshhshshh的博客 422

Qt实现窗口自适应分辨率大小

如果希望窗口大小始终保持与屏幕分辨率一致,可以将上述代码放在窗口的resizeEvent()函数中。这样,每当窗口大小发生变化时,都会自动调用resizeEvent()函数,从而实现窗口大小的自适应调整。在Qt中,可以通过一些简单的方法实现窗口大小随分辨率变化而自适应调整。获取到当前屏幕的分辨率后,可以根据需要调整窗口的大小。无论在何种分辨率下运行应用程序,窗口都能够正确地自动调整大小,提供更好的用户体验。除了调整窗口大小,还可以考虑将窗口设置为最大化,以充分利用屏幕空间。步骤2:调整窗口大小。

FuJavascript的博客 3655

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

SpringBoot整合MongoDB及简单的操作

一,环境搭建 1)引入依赖 <parent> <artifactId>spring-boot-parent</artifactId> <groupId>org.springframework.boot</groupId> <version>2.3.7.RELEASE</version> </parent> <dependencies>

weixin_44991304的博客 2332

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

MongoDB整合SpringBoot

MongoDB整合SpringBoot实现CRUD操作

玄策 338

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

SpringBoot集成MongoDB

SpringBoot集成MongoDB

weixin_48304611的博客 1264

Spring Boot 集成 MongoDB:从入门到常用写法

本文介绍了在Spring Boot中集成MongoDB的完整流程。主要内容包括:通过Docker快速搭建MongoDB环境;添加Spring Data MongoDB依赖并配置连接;使用@Document注解定义实体类映射;通过继承MongoRepository实现基础CRUD操作;以及分页查询等进阶功能的使用方法。文章提供了从环境准备到业务代码实现的完整示例,帮助开发者快速掌握Spring Boot与MongoDB的整合开发。

qq_29029209的博客 179

MongoDB 模糊查询包含/不包含字符串

MongoTemplate模糊查询,spring boot MongoDB模糊查询 模糊查询 不包含content 的记录 String content = "192.168.1.2"; Pattern compile = Pattern.compile("^((?!" + content+ ").)*$", Pattern.CASE_INSENSITIVE); Query query ...

亲测,只为展现最完美的有效! 1万+

Spring boot集成mongodb

spring-data-mongodb提供了MongoTemplate与MongoRepository两种方式访问mongodb,MongoRepository操作简单,MongoTemplate操作灵活,我们在项目中可以灵活适用这两种方式操作mongodb,MongoRepository的缺点是不够灵活,MongoTemplate正好可以弥补不足。 1.创建工程,添加依赖 <dependencies> <dependency> &lt...

AlexWang30的博客 898

mongoTemplate --API

主要讲解MongoTemplate 相关API, 使用springboot + mongoDB环境 1.1 保存,插入文档数据    下图中指定保存当前文档的集合为col, 如果不指定默认即为当前Model对象 @RestController public class ShopController { @Autowired MongoTemplate mongoTempl...

章 2万+

springboot整合mongodb

1.首先pom.xml文件引入依赖包 <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-mongodb</artifactId> <version>2.2.12.RELEASE</version> </depende

zhuang_kang 211

mongodb分页,模糊,时间,条件,查询

1.添加maven依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId> </depe...

quintino的博客 857

mongoDB 操作

依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId> </dependency> <dependency> <groupId&

weixin_43326384的博客 148

mongoTemplate 操作

1.1 保存,插入文档数据 下图中指定保存当前文档的集合为col, 如果不指定默认即为当前Model对象 @RestController public class ShopController { @Autowired MongoTemplate mongoTemplate; @GetMapping("/save") public void save() { ShopDO shop1 = new ShopDO(100L,"菜鸟教程");

qq_45536740的博客 649
上一篇: CentOS7 yum 安装 mongodb4.0 (单机版)
下一篇: 在springnvc/springboot中, 利用jason 的Map参数实现多个参数传递
大树叶
博客等级 码龄12年 1171粉丝 664原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值