MongoDB教程:正则表达式($regex)

1384 篇文章 19 订阅
订阅专栏

正则表达式用于模式匹配,基本上是用于文档中的发现字符串。

有时,在检索集合中的文档时,我们可能不知道要搜索的确切字段值。因此,可以使用正则表达式来基于模式匹配搜索值来帮助检索数据。

本章我们将要学习如下内容——

  • 使用$ regex运算符进行模式匹配
  • 与$ options进行模式匹配
  • 没有regex运算符的模式匹配
  • 从集合中获取最后一个’n’个文档

使用$ regex运算符进行模式匹配

MongoDB中的regex运算符用于在集合中搜索特定的字符串。以下例子显示了如何完成此操作。

假设我们有相同的Employee集合,其字段名称为“ Employeeid”和“ EmployeeName”。我们还假设我们的收藏集中有以下文件。

Employee idEmployee Name
22NewMartin
2Mohan
3Joe
4MohanR
100Guru99
6Gurang

在下面的代码中,我们使用了正则表达式运算符来指定搜索条件。

img

db.Employee.find({EmployeeName : {$regex: “Gu” }}).forEach(printjson)

代码解释:

  1. 在这里,我们要查找所有带有字符“ Gu”的EmployeeName。因此,我们指定$ regex运算符来定义“ Gu”的搜索条件
  2. printjson用于打印查询以更好的方式返回的每个文档。

命令执行成功,将显示以下结果:

img

可以看出,这里返回了其中Employee Name包含“ Gu”字符的那些文档。

如果假设我们的集合包含以下文档以及其他文档,其中包含名为“ Guru999”的Employee Name。如果将搜索条件输入为“ Guru99”,它还将返回包含“ Guru999”的文档。但是,假设我们不希望这样做,只想返回带有“ Guru99”的文档。然后,我们可以通过精确的模式匹配来做到这一点。为了进行精确的模式匹配,我们将使用 ^ 和 $ 字符。我们将在字符串的开头添加 ^ 字符,并在字符串的末尾添加$。

Employee idEmployee Name
22NewMartin
2Mohan
3Joe
4MohanR
100Guru99
6Gurang
8Guru999

如何完成此操作。

img

db.Employee.find({EmployeeName : {$regex: “^Guru99$”}}).forEach(printjson)

代码解释:

  1. 在搜索条件中,我们使用^和 字 符 。 用 于 确 保 字 符 串 以 特 定 字 符 开 头 , 而 字符。^用于确保字符串以特定字符开头,而 用于确保字符串以特定字符结尾。因此,当代码执行时,它将仅获取名称为“ Guru99”的字符串。
  2. printjson用于打印查询以更好的方式返回的每个文档。

命令执行成功,结果如下:

img

从结果中,我们可以清楚地看到已提取字符串“ Guru99”。

与$ options进行模式匹配

使用正则表达式运算符时,还可以使用**$ options关键字提供其他选项。假设我们想查找所有在Employee Name中带有“ Gu”的文档,而不管它是区分大小写还是不区分大小写。如果需要这样的结果,那么我们需要使用不区分大小写参数的$ options**。

以下示例显示了如何完成此操作。

假设我们有相同的Employee集合,其字段名称为“ Employeeid”和“ EmployeeName”。

假设我们的集合有以下文档。

Employee idEmployee Name
22NewMartin
2Mohan
3Joe
4MohanR
100Guru99
6Gurang
7GURU99

现在,我们运行与上一个相同的查询,我们将永远不会在结果中看到带有“ GURU99”的文档。为了确保将其包含在结果集中,我们需要添加$ options“ I”参数。

img

db.Employee.find({EmployeeName:{$regex: “Gu”,$options:’i’}}).forEach(printjson)

代码说明:

  1. “ i ”参数(表示不区分大小写)的$ options指定无论我们发现字母“ Gu”是小写还是大写,我们都希望执行搜索。

命令执行成功,结果如下:

img

结果表明,即使一个文档具有大写字母“ Gu”,该文档仍会显示在结果集中。

没有regex运算符的模式匹配

不用regex运算符也可以进行模式匹配。以下示例显示了如何完成此操作。

img

db.Employee.find({EmployeeName: /Gu/’}).forEach(printjson)

代码说明:

  1. “ //”选项基本上意味着在这些定界符中指定搜索条件。因此,我们指定/ Gu /再次查找其EmployeeName中具有“ Gu”的文档。

命令执行成功,结果如下:

img

结果显示,返回了其中雇员姓名包含“ Gu”字符的那些文档。

从集合中获取最后n个文档

有多种方法可以获取集合中的最后n个文档。让我们看看以下步骤中的一种方法。

假设我们有相同的Employee集合,其字段名称为“ Employeeid”和“ EmployeeName”。

我们还假设我们的集合中有如下文档:

Employee idEmployee Name
22NewMartin
2Mohan
3Joe
4MohanR
100Guru99
6Gurang
7GURU99

img

db.Employee.find().sort({_id:-1}).limit(2).forEach(printjson)

代码解释:

1)查询文档时,请使用sort函数根据集合中的_id字段值以相反的顺序对记录进行排序。-1基本上表示按相反顺序或降序对文档进行排序,以便最后一个文档成为要显示的第一个文档。

2)然后使用limit子句仅显示所需的记录数。在这里,我们设置了limit子句(2),因此它将获取最后两个文档。

命令执行成功,结果如下:

img

结果表明显示了集合中的最后两个文档。因此,我们清楚地表明,要获取集合中的最后’n’个文档,我们可以首先按降序对文档进行排序,然后使用limit子句返回所需的n个文档。

注意:如果对大于38,000个字符的字符串执行搜索,则不会显示正确的结果。

总结:

  • 模式匹配可以通过$ regex运算符实现。该运算符可用于在集合中查找某些字符串。
  • ^和 符 号 可 用 于 精 确 的 文 本 搜 索 , 其 中 用 于 确 保 字 符 串 以 特 定 字 符 开 头 , 而 符号可用于精确的文本搜索,其中^用于确保字符串以特定字符开头,而 用于确保字符串以特定字符结尾。
  • ‘i’和$ regex运算符可用于指定不区分大小写的字符串,以便可以搜索字符串(小写还是大写)。
  • 分隔符//也可用于模式匹配。
  • 结合使用sort和limit函数可以返回集合中的最后n个文档。可以使用sort函数以降序返回文档,之后可以使用limit子句来限制要返回的文档数。

links:

https://www.guru99.com/regular-expressions-mongodb.html

https://mongoing.com/archives/docs/mongodb%e5%88%9d%e5%ad%a6%e8%80%85%e6%95%99%e7%a8%8b/mongodb%e6%ad%a3%e5%88%99%e8%a1%a8%e8%be%be%e5%bc%8f%ef%bc%88regex%ef%bc%89

MongoDB查询之高级操作详解(多条件查询、正则匹配查询等)
Pandfson的专栏
06-30 8638
本文介绍了MongoDB中的高级查询操作,包括多条件查询、正则匹配查询和聚合查询。MongoDB提供了丰富的查询语法,包括多条件查询、正则匹配查询等高级操作,本文将介绍这些高级操作的详细用法。在MongoDB中,我们可以使用$and、$or、$nor等逻辑运算符来实现多条件查询。上述代码中使用了$group和$sum运算符,它将用户表按照gender字段进行分组,并计算每个性别的用户数量。除了上述常用的聚合管道操作,MongoDB还提供了许多其他的操作,例如$unwind、$lookup等。
MongoDB正则表达式
zhenshilei0106的博客
02-26 637
模糊查询 一、常规示例 一、某文档包含某字段的模糊查询: 使用 sql 的写法 select * from member where name like '%XXX%' 在mongodb中: db.member.find({"name":{ $regex:/XXX/ }}) 二、查询以某字段为开头的文档 db.member.find({"name":{$regex:/^XXX/}}) 三、查...
MongoDB教程(二十):MongoDB正则表达式
最新发布
菜鸟小码的博客
07-23 1466
正则表达式是文本处理的强大工具,MongoDB 支持使用正则表达式进行模式匹配查询,这使得开发者能够以高度灵活的方式过滤和检索数据。本文将深入探讨 MongoDB正则表达式的使用方法,包括基本语法、选项标志、以及如何在实际查询中应用正则表达式
MongoDB 正则表达式详解:高效数据查询与处理技巧
欢迎来到技术蜜糖罐的IT角落!
06-04 1816
MongoDB正则表达式功能提供了强大的模式匹配和文本搜索能力,可以满足各种数据处理和查询需求。合理地使用正则表达式,可以提高数据处理的效率和灵活性,但需要注意性能和模式设计等方面的问题,以保证系统的稳定性和可靠性。
Mongodb正则表达式$regex操作符
热门推荐
OceanSky的专栏
12-14 5万+
一、$regex为模糊查询的字符串提供正则表达式功能,MongoDB使用Perl兼容正则表达式(即“文件”)8.41版与UTF-8支持。 使用$regex操作符要使用如下语法: { : { $regex: /pattern/, $options: '' } } { : { $regex: 'pattern', $options: '' } } { : { $regex: /pattern/ }
MongoDB 正则表达式
m0_37062111的博客
02-16 1148
正则表达式是使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。MongoDB 使用操作符来设置匹配字符串的正则表达式MongoDB使用PCRE (Perl Compatible Regular Expression) 作为正则表达式语言。不同于全文检索,我们使用正则表达式不需要做任何配置。
MongoDB正则表达式及应用
12-13
MongoDB还提供了正则表达式功能的字符串模式使用正则表达式$regex操作符。MongoDB使用PCRE(Perl兼容正则表达式)为正则表达式语言。 不同于文本搜索,我们不需要做任何配置或命令就能直接使用正则表达式。 考虑下包含...
MongoDB正则表达式.pdf
07-11
MongoDB中,可以使用`$regex`操作符来在查询中应用正则表达式。 1. **使用正则表达式**: 要在MongoDB中执行基于正则表达式的查询,你可以直接在查询条件中使用正则表达式。例如,要找到`post_text`字段中包含`...
解决正则表示式匹配($regex)引起的一次mongo数据库cpu占用率高的问题
10-16
MongoDB中,正则表达式($regex)匹配是一个强大的查询工具,但如果不恰当使用,可能会引发性能问题,特别是当涉及到CPU资源的消耗时。在本文中,我们将深入探讨一个由于正则表达式匹配导致MongoDB数据库CPU占用率...
MySQL基础教程正则表达式和模式匹配
程序员光剑
10-23 72
作者:禅与计算机程序设计艺术 1.背景介绍 MySQL是一个开源关系型数据库管理系统,它最初是Oracle公司开发,之后被Sun公司收购并改名为MySQL。目前最新版本的MySQL是8.0版本。MySQL支持丰富的数据类型、完整的SQL语法,并且具备强大的安全性和可靠性。不过,由于MySQL的高昂性
MongoDB学习——正则表达式
SnowMultiflora的博客
11-04 656
MongoDB 中查询条件也可以使用正则表达式作为匹配约束。 语法格式: db.COLLECTION_NAME.find({字段名:正则表达式}); db.COLLECTION_NAME.find({字段名:{$regex:正则表达式,$options:正则选项}}); 正则选项: i - 不区分大小写以匹配大小写的情况。 m - 多行查找,如果内容里面不存在换行符号(例如 ...
mongodb 正则
weixin_34246551的博客
05-12 101
正则表达式常用来在所有语言中搜索字符串的任何模式或文字。MongoDB还提供了正则表达式功能的字符串模式使用正则表达式$regex操作符。MongoDB使用PCRE(Perl兼容正则表达式)为正则表达式语言。 不同于文本搜索,我们不需要做任何配置或命令就能直接使用正则表达式。 考虑下包含文字后其标签的帖子集合,文档结构如以下: { "post_text": "enjoy the mo...
MongoDB聚合运算符:$regexFind
superatom01的博客
04-17 920
摘要:`$regexFind`在聚合表达式中提供正则表达式regex)模式匹配功能。如果找到匹配,则返回包含第一个匹配信息的文档。如果未找到匹配,则返回空值。 在MongoDB 4.2 之前,聚合管道只能在`$match`阶段使用查询操作符 `$regex`。
mongodb中$regex的用法
山鬼谣的专栏
05-24 2万+
官网地址:https://docs.mongodb.com/manual/reference/operator/query/regex/#regex-case-insensitive举个例子来说:现在有以下集合(官网的例子):{ "_id" : 100, "sku" : "abc123", "description" : "Single line description." } { "_id" :
MongoDB正则查询操作
seven瓜的博客
12-08 3047
插入一条数据: { "_id" : ObjectId("61a83d5502bb260d1cec4e46"), "money" : 666, "id" : 1, "text1" : "ddfdfaf", "text2" : "hkjhkjh" } { "_id" : ObjectId("61a8411402bb2614109443f2"), "money" : 888, "id" : 2, "text1" : "ddfaf2", "text2" : "hkjhk
java正则表达式忽略大小写_MongoDB 正则表达式
06-02
MongoDB中,可以使用$regex操作符来进行正则表达式匹配。例如,可以使用以下代码查询名字中包含"john"的所有用户: ```javascript db.users.find({name: {$regex: "john"}}) ``` 在这个查询中,$regex操作符表示...
写文章

热门文章

  • Java 如何将String转化为Int 666362
  • IntelliJ IDEA教程之如何clean或者install Maven项目 115677
  • Java冒泡排序代码实现 91864
  • 解决idea application context not configured for this file的问题 91009
  • sublime text常用快捷键及多行光标批量操作教程 69454

分类专栏

  • 数据库 938篇
  • Linux 981篇
  • docker 376篇
  • Python 480篇
  • php 61篇
  • k8s 540篇
  • C# 26篇
  • go 442篇
  • JVM调优 125篇
  • transmit 1篇
  • 经验分享 570篇
  • 前端技术 445篇
  • 后台编程 1384篇
  • scala 221篇
  • Java基础 557篇
  • 大数据 432篇

最新评论

  • docker 端口映射 及外部无法访问问题:开启IP转发从而解决

    叶叶知秋: 太牛了找了一晚上是ip转发没有打开

  • Docker构建及部署Python django-vue3-admin项目:前后端Dockerfile脚本示例及mysql redis celery基础镜像

    北风之神c: 总结的很全面,写得赞,博主用心了。 celery对目录层级文件名称格式要求太高,只适合规划新的项目,对不规则文件夹套用难度高。 所以新手使用celery很仔细的建立文件夹名字、文件夹层级、python文件名字。 所以网上的celery博客教程虽然很多,但是并不能学会使用,因为要运行起来需要以下6个方面都掌握好,博客文字很难表达清楚或者没有写全面以下6个方面。 celery消费任务不执行或者报错NotRegistered,与很多方面有关系,如果要别人排错,至少要发以下6方面的截图,因为与一下6点关系很大。 1)整个项目目录结构, 2)@task入参 ,3)celery的配置,4)celery的配置 include ,5)cmd命令行启动参数 --queues= 的值,6)用户在启动cmd命令行时候,用户所在的文件夹。 在不规范的文件夹路径下,使用celery难度很高,一般教程都没教。 [项目文件夹目录格式不规范下的celery使用演示](https://github.com/ydf0509/celery_demo) 。 此国产分布式函数调度框架 funboost python万能通用函数加速器 https://funboost.readthedocs.io/zh-cn/latest/articles/c1.html , 从用法调用难度,用户所需代码量,超高并发性能,qps控频精确程度,支持的中间件类型,任务控制方式,稳定程度等20个方面全方位超过celery。发布性能提高1000%,消费性能提高2000%。 python万能分布式函数调度框架funboost支持python所有类型的并发模式和一切知名消息队列中间件,python函数加速器,只需要一行代码调度任意函数,框架包罗万象,万能编程功能宝典,一统编程思维,与业务不绑定,适用范围广。 pip install funboost

  • linux scp拷贝软链接:只拷贝软链接不拷贝实际指向目录

    奎木狼2023: 大写 -P是端口号 小写 -p是保留原来的属性,但对软链接不起作用,软链接还是会复制原文件

  • Spring Boot 2.x基础教程:进程内缓存的使用与Cache注解详解

    码踏云端: 一个字:好!

  • MySQL大小写不敏感配置 lower_case_table_names = 1

    CSDN-Ada助手: MySQL入门 技能树或许可以帮到你:https://edu.csdn.net/skill/mysql?utm_source=AI_act_mysql

大家在看

  • 面试速通宝典——1
  • 编码器与霍尔传感器的工作原理及区别 141
  • 大麦网爬取案例#Python
  • 基于ssm+vue动漫网站(开题报告+程序+论文+java) 579
  • Python 虚拟环境安装使用(Anaconda 完整实操版) 1119

最新文章

  • MyFlash MySQL数据回滚SQL案例
  • pgvector的安装及使用
  • DAG(有向无环图)通俗介绍
2024
09月 88篇
08月 197篇
07月 93篇
06月 65篇
05月 115篇
04月 115篇
03月 104篇
02月 149篇
01月 134篇
2023年1596篇
2022年728篇
2021年1538篇
2020年1657篇
2019年401篇
2018年278篇
2017年35篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学亮编程手记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值

玻璃钢生产厂家丽水多彩玻璃钢雕塑设计浚县玻璃钢雕塑加工厂家荆州卡通玻璃钢雕塑玻璃钢抽象雕塑圆雕镇江玻璃钢海豚雕塑定制玻璃钢雕塑的由来郸城玻璃钢雕塑玻璃钢雕塑起稿安仁玻璃钢花盆花器新郑太湖石玻璃钢仿铜雕塑厂家宝鸡公园标识玻璃钢雕塑嘉兴特色玻璃钢雕塑供应商深圳玻璃钢透光雕塑生产厂家济南景观玻璃钢雕塑定制玻璃钢卡通小飞象企鹅雕塑黄山玻璃钢雕塑价钱滁州十一商场美陈永州校园玻璃钢雕塑施工安装主题玻璃钢雕塑手工制作乌鲁木齐玻璃钢雕塑施工广州萝岗商场美陈安徽玻璃钢雕塑企业深圳商业街玻璃钢雕塑怎么制作曲江玻璃钢花盆花器通州区玻璃钢雕塑无锡动物玻璃钢雕塑厂家瑞丽市玻璃钢雕塑多少钱杭州商场美陈怎么样贵阳玻璃钢人物雕塑吉林人物玻璃钢雕塑优势香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化