您现在的位置是:首页 > 正文

MongoDB模糊查询($regex查询、正则表达式匹配查询) 热门推荐

2024-01-30 22:37:58阅读 0
MongoDB的模糊查询可以使用 $regex 运算符通过正则表达式来进行匹配查询。
$regex :为查询中的模式匹配字符串提供正则表达式功能 。
语法:

{ < field >: { $ regex : / pattern / , $ options : ‘’ } }
{ < field >: { $ regex : ‘pattern’ , $ options : ‘’ } }
{ < field > : { $ regex : / pattern / < options > } }

(上面三种写法任选其一)

示例:

一、某文档包含某字段的模糊查询:
使用 sql 的写法
select * from member where name like '%XXX%'
在mongodb中:
db.member.find({"name":{ $regex:/XXX/ }})

二、查询以某字段为开头的文档
db.member.find({"name":{$regex:/^XXX/}})

三、查询以某字段为结尾的文档
db.member.find({"name":{$regex:/XXX^/}})

四、查询忽略大小写
db.member.find({"name":{$regex:/XXX/i}})

这里的 i 就是指最上面语法中的那个 options 的值
i 是其的一个选项,代表忽略大小写的意思。
这里 options 还有以下几个选项供使用:

选项 描述 语法限制
i 不区分大小写以匹配大小写的情况。
m 对于包含锚点的模式(即^,对于开始, $结束),在每行的开头或结尾处匹配具有多行值的字符串。如果没有此选项,这些锚点将在字符串的开头或结尾处匹配,如果模式不包含锚点或者字符串值没有换行符(例如\n),则该m选项无效。
x $regex除非转义或包含在字符类中,否则“扩展”功能可忽略模式中的所有空格字符。 此外,它会忽略中间的字符,包括未转义的hash / pound(#)字符和下一个新行,以便您可以在复杂模式中包含注释。这仅适用于数据字符; 空格字符可能永远不会出现在模式中的特殊字符序列中。 该x选项不影响VT字符的处理(即代码11)。 需要$regex与$options语法
s 允许点字符(即.)匹配包括换行符在内的所有字符。有关示例,请参阅使用。点匹配新线。 需要$regex与$options语法

注意:不能在$regex里面使用运算符表达式 $in;
还有:如果模糊查询的字段存在索引的话,查询速度会更快。
更多内容可以查阅MongoDB的官方文档,点击查看

了解更多MongoDB聚合管道内容可点击:https://gitbook.cn/gitchat/activity/5c1b74ac52d99437c2b822e9

点此欢迎光临我的个人网站【一几文星球】

微信公众号,欢迎关注,一起学习。
在这里插入图片描述

网站文章

  • linux中命令tat,照着书敲linux下载安装命令?大汇总来咯!!!

    linux中命令tat,照着书敲linux下载安装命令?大汇总来咯!!!

    linux下载安装的命令一. 本地上传1.1 使用scp命令1.2 使用xshell工具1.3 常用方法二. 网络远程下载2.1 curl_一种下载文件的工具2.2 wget_软件下载工具(非安装方式...

    2024-01-30 22:37:29
  • IOS中的多线程和NSRunLoop概述(转载)

    IOS中的多线程和NSRunLoop概述(转载)

    线程概述  有些程序是一条直线,从起点到终点,如Hello World,运行打印完,它的生命周期便结束了;有些程序是一个圆,不断循环,直到将它切断,如操作系统,一直运行直到你关机。  一个运行着的程序就是一个进程或者叫做一个任务,一个进程至少包含一个线程,线程就是程序的执行流。Mac和iOS中的程序启动,创建好一个进程的同时, 一个线程便开始运行,这个线程叫主线程。主线程在程序中的地位和其他...

    2024-01-30 22:37:20
  • C# - Excel - Microsoft Access 数据库引擎找不到对象

    我几乎要无语了,疯掉了,以为是office本身的问题,换了好多次office2007,安装又不顺利,换到了office2010,想想大部分应该兼容2007,所以用着office2010了. 甚至差点要...

    2024-01-30 22:37:13
  • IDEA 设置Kotlin 自动类型推断后的类型

    IDEA 设置Kotlin 自动类型推断后的类型

    开发kotlin类型大部分都是类型推断出来的,为了编码的规范,防止因为类型问题出现bug,可以设置类型推断的显示。设置完成后显示为这样

    2024-01-30 22:36:44
  • 使用RxJava打造无限轮播图

    使用RxJava打造无限轮播图

    最近项目使用到无限录播图,打造无限轮播图有2种方式,其中一种是在adpater中返回Ingeger.MaxValue,让viewPager无限轮播起来以前都是使用handler来发消息,此次打造轮播图使用全新到方法,通过在需要轮播到列表的头部添加最后一张图片,列表的尾部添加第一张图片来达到无限循环,使用RxJava的interval来实现不断的循环播放,图片按下停止轮播,抬起继续轮播,切到其它页面

    2024-01-30 22:36:36
  • python列出文件夹下所有文件名

    用python获取指定文件夹下所有文件名很简单,使用os.walk()方法dir_path = '../../data/'for root, dirs, files in os.walk(dir_path): print(files)其中files是一个list,保存的是该文件夹下所有文件的文件名,别看这是个for循环,但其实这个循环只执行了一次,即如果将上面代码中的print(file...

    2024-01-30 22:36:30
  • 扁平数组转换为树状结构

    本文代码只是一个例子. const data = [ {id:"01", name: "张大大", pid:"", job: "项目经理"}, {id:"02", name: "小亮", p...

    2024-01-30 22:36:24
  • php array colum,php自定义数组函数array_column

    例子,自己实现的php5.5数组函数array_column。代码:复制代码 代码示例:if(!function_exists('array_column')){function array_column($input, $columnKey, $indexKey=null){$columnKeyIsNumber = (is_numeric($columnKey)) ? true : f...

    2024-01-30 22:35:56
  • jdk安装Visual Gc,报错检查代理设置或稍后重试。服务器目前可能不可用。 您可能还需要确保防火墙不会阻塞网络通信。 您的高速缓存可能已过期。请单击“检查更新”以刷新内容。解决

    jdk安装Visual Gc,报错检查代理设置或稍后重试。服务器目前可能不可用。 您可能还需要确保防火墙不会阻塞网络通信。 您的高速缓存可能已过期。请单击“检查更新”以刷新内容。解决

    jdk安装Visual Gc,报错检查代理设置或稍后重试。服务器目前可能不可用。 您可能还需要确保防火墙不会阻塞网络通信。 您的高速缓存可能已过期。请单击“检查更新”以刷新内容。解决

    2024-01-30 22:35:48
  • linux关闭established状态,Linux大量异常ESTABLISHED TCP连接问题排查

    最近在工作中遇到一个关于TCP/IP中连接异常的问题,加深了对与TCP/IP整套机制的理解。在此,进行分享希望对遇到同样问题的朋友有所帮助。TCP连接异常问工作上一个服务端程序,对外提供短连接RPC响...

    2024-01-30 22:35:41