MongoDB 正则表达式

news2024/12/25 0:59:21

MongoDB 正则表达式

正则表达式是使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。

MongoDB 使用 $regex 操作符来设置匹配字符串的正则表达式。

MongoDB使用PCRE (Perl Compatible Regular Expression) 作为正则表达式语言。

不同于全文检索,我们使用正则表达式不需要做任何配置。

实例

已知test 集合数据:

/* 1 */
{
    "_id" : ObjectId("63e36e36da0f660d6928a751"),
    "id" : 200.0,
    "name" : "zhAng",
    "age" : 32.0
}

/* 2 */
{
    "_id" : ObjectId("63e36e36da0f660d6928a752"),
    "id" : 22.0,
    "name" : "wang",
    "age" : 18.0
}

/* 3 */
{
    "_id" : ObjectId("63e36ea0da0f660d6928a753"),
    "id" : 300.0,
    "name" : "zeng",
    "age" : 28.0,
    "tag" : [ 
        "red", 
        "green"
    ]
}

/* 4 */
{
    "_id" : ObjectId("63e37016da0f660d6928a754"),
    "id" : 888.0,
    "name" : "zeng",
    "age" : 20.0,
    "tag" : [ 
        "red", 
        "blue"
    ]
}

使用正则表达式

以下命令使用正则表达式查找name中包含 an字符串数据:

db.test.find({name:{$regex:"an"}})

查询结果:  

以上查询也可以写为:

db.test.find({name:/an/})

查询结果:  

不区分大小写的正则表达式

如果检索需要不区分大小写,我们可以设置 $options 为 $i。

以下命令将查找不区分大小写的字符串 an:

db.test.find({name:{$regex:"an",$options:"$i"}})

查询结果: 


数组元素使用正则表达式

我们还可以在数组字段中使用正则表达式来查找内容。 这在标签的实现上非常有用,如果需要查找包含以 re开头的标签数据(re或 red), 可以使用以下代码:

db.test.find({tag:{$regex:"re"}})

查询结果: 


优化正则表达式查询

  • 如果你的文档中字段设置了索引,那么使用索引相比于正则表达式匹配查找所有的数据查询速度更快。
  • 如果正则表达式是前缀表达式,所有匹配的数据将以指定的前缀字符串为开始。例如: 如果正则表达式为 ^tut ,查询语句将查找以 tut 为开头的字符串。

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

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

相关文章

有趣的HTML实例(十二) 早安、晚安动画(css+js)

这话在我心里已经复习了几千遍。我深恨发明不来一个新鲜飘忽的说法,只有我可以说只有你可以听,我说过,我听过,这说法就飞了,过去、现在和未来没有第二个男人好对第二个女人这样说。 ——《围城》 目录 一、前言 二、…

MySQL中的事务详解

目录 一.什么是事务 二.事务操作 演示 小结 三.事务的特性 四.事务的隔离级别 概述 四种隔离级别 脏读、不可重复读、幻读 操作 一.什么是事务 在MySQL中的事务(Transaction)是由存储引擎实现的,在MySQL中,只有InnoDB存储引擎才支持…

【动态规划】背包问题题型及方法归纳

背包问题的种类 背包问题是在规定背包容量为j的前提下,每个物品对应的体积为v[i],价值为w[i],从物品0到物品i中选择物品放入背包中,找出符合某种要求的价值。 (1)背包问题种类 01背包:每种物…

访学案例|经济学老师加急英签如期出国

N老师是学校资助的公派访学,指定英国,要求年底前出国。经过努力,我们为其落实了经济学学术研究排名位列全英第五的埃塞克斯大学。为保证预留充足的准备时间,N老师选择了超级加急的AV签证,24小时过签,最终如…

基于 VPX 总线的工件台运动控制系统研究与开发-以光刻运动台为例(一)

工件台系统是光刻机的关键子系统之一,工件台运动控制系统对实现光刻机性能指标具有至关重要的作用,因此研发工件台运动控制系统具有极其重要的工程应用价值。论文根据工件台控制系统必须具备的并行性、同步性和实时性等技术需求,建立了基于 V…

【Kubernetes】CI/CD 简介与 ECS 服务规划

一,前言 去年公司上了一个持续集成平台,设计技术组件与开源工具集,大致如下: 使用 Gitlab 作为代码的管理和托管工具;使用 Gitlab CI 持续集成工具;使用 Docker 开源应用容器引擎;使用 Harbor…

ABO溶血症概率

[简介]ABO溶血是由于母亲和胎儿ABO血型不合引起的新生儿溶血,概率不是很大,一般出现在准妈妈是O血,准爸爸是非O血,这次容易发生血型不合,但新生儿ABO溶血概率不高,大多数症状相对较轻。ABO溶血的概率是什么…

2023美赛必须注意事项

文章目录首页部分要求竞赛期间题目查看题目下载论文要求比赛提示控制号提交解决方案更多注意事项首页部分要求 具体如下: 我提取一些关键词如下: 第一页:摘要页字体要求:12点的 Times New Roman 字体请勿在此页面或任何页面上…

几种在Linux/window下查询外网IP的办法。

hello world curl ifconfig.me/ip如下图 1. 纯文本 https://ifconfig.me/ip https://ipinfo.io/ip 或 https://ipecho.net/ip 或 https://ipecho.net/plain https://www.trackip.net/ip https://icanhazip.com 2. JSON格式 https://ifconfig.me/all.json https://ipi…

见微可视化平台研究(一)

1. Python项目部署 使用容器部署 将Dockerfile拷贝道algo目录: # docker build -t algo:v1 . # docker run -d -p 5000:5000 algo:v12. 部署依赖数据库 2.1 MySQL初始化 MySQL安装忽略,初始化脚本: backend/datascience-service/src/mai…

从0到1一步一步玩转openEuler--16 openEuler使用DNF(YUM)管理软件包组

文章目录16.1 列出软件包组清单16.2 显示软件包组信息16.3 安装软件包组16.4 删除软件包组DNF是一款Linux软件包管理工具,用于管理RPM软件包。DNF可以查询软件包信息,从指定软件库获取软件包,自动处理依赖关系以安装或卸载软件包,…

扬帆策略|10万亿市场疯狂反攻,撑爆5万人,大牛市要来了?

今日商场太强了,很多财物都在猛涨,有一种牛市已来的感觉! 首先,来看一向被我们视为核心财物的茅台酒价。据白酒数据渠道“不贰酱”音讯,今日茅台酒行情价全线大涨。飞天方面,全系列又有20元/瓶的涨幅&#…

c++11 标准模板(STL)(std::multimap)(八)

定义于头文件 <map> template< class Key, class T, class Compare std::less<Key>, class Allocator std::allocator<std::pair<const Key, T> > > class multimap;(1)namespace pmr { template <class Key, class T…

Compose Recomposer启动流程分析

初始组合流程开始的第一步就是创建 Recomposer 。 接着 Recomposer 又作为构造参数创建了 CompositionImpl 、 ComposerImpl &#xff0c;又在 AndroidComposeView#onAttachedToWindow() 触发 onViewTreeOwnersAvailable 回后&#xff0c;调用 composeInitial() 开启初始组合。…

java连接docker里面的hbase

原代码代码一直卡着报错如下&#xff1a;java.io.UncheckedI0Exception:org.apache.hadoop.hbase.client.RetriesExhaustedException: Cant get the location for replica 0at org.apache.hadoop.hbase.client.ResultScanner$1.hasNext(ResultScanner.java:55)at hbase.SelectS…

基于C++的考试系统

一、需求分析 ​ 设计一个简单的考试系统&#xff0c;可进行C与Java的考试&#xff0c;考生姓名、考生学号、C题目、Java题目、C答案&#xff0c;Java答案分别存入…/txt文件数据/路径下的StudentsName、StudentsNum、QuestionC&#xff0c;QuestionJ、AnswerC、AnswerJtxt文件…

【一般人不会告诉你】比肩chatgtp的5款AI网站

话不多说&#xff0c;直接上连接 1. Dall-E: https://labs.openai.com/ 2. Codeformer: https://shangchenzhou.com/projects/Co... 3. Playground AI: https://playgroundai.com/ 4. Clip Drop: https://clipdrop.co/relight 5. Astria: https://www.strmr.com/examples …

Apache服务关闭攻防场景模拟实验

一、场景概述 攻击机攻击已知的公共Apache web服务器&#xff0c;导致Apache服务关闭&#xff0c;web网站无法访问。攻击者利用安全外壳 (SSH) 暴力攻击访问服务器&#xff0c;并上传后门文件和脚本&#xff0c;每分钟将服务器的用户名称和密码发送给攻击机以保持对服务器的访…

【分享】如何通过集简云将ChatGPT人工智能接入到我们的抖音中?

ChatGPT是一款非常强大的人工智能产品&#xff0c;可以有创造性的回复和创作文字&#xff0c;图片&#xff0c;适用于很多办公场景。这篇文章将介绍如何将ChatGPT接入到我们的抖音中。 在集简云中的ChatGPT应用 目前集简云提供了两个ChatGPT应用: OpenAI(ChatGPT&#xff09;内…

什么是同步整流和异步整流

在设计降压型DCDC电路的时候&#xff0c;经常会听到同步整流&#xff08;synchronous&#xff09;和异步整流&#xff08;asynchronous&#xff09;。那么什么是同步整流&#xff0c;什么是异步整流呢从这两种电路的拓扑来看&#xff0c;异步整流型外围有一个续流二极管&#x…