正则表达式常用来在所有语言中搜索字符串的任何模式或文字。MongoDB还提供了正则表达式功能的字符串模式使用正则表达式$regex操作符。MongoDB使用PCRE(Perl兼容正则表达式)为正则表达式语言。

不同于文本搜索,我们不需要做任何配置或命令就能直接使用正则表达式。

考虑下包含文字后其标签的帖子集合,文档结构如以下:

{"post_text": "enjoy the mongodb articles on yiibai", "tags": [ "mongodb", "yiibai" ] }

使用正则表达式表达

下面的正则表达式查询搜索所有包含字符串 yiibai.com 的帖子:

>db.posts.find({post_text:{$regex:"yiibai.com"}})

同样的查询也可以写为:

>db.posts.find({post_text:/yiibai.com/})

使用正则表达式不区分大小写

为了使搜索不区分大小写,我们使用$options 带有值参数 $i。下面的命令会搜索字符串:yiibai.com,不论大小写:

>db.posts.find({post_text:{$regex:"yiibai",$options:"$i"}})

该查询重新调整的结果是:其中在大小下包含词语 yiibai 文档,如以下:

{"_id" : ObjectId("53493d37d852429c10000004"), "post_text" : "hey! this is my post on Yiibai", "tags" : [ "yiibai" ] }

使用正则表达式的数组元素:

我们还可以使用数组字段正则表达式概念。 这时候我们实现标签的功能显得尤为重要。 所以,如果想要搜索带有标签以词组tutorial开始所有的帖子(无论是tutorial或tutorials或tutorialjava或tutorialphp),都可以使用下面的代码:

>db.posts.find({tags:{$regex:"tutorial"}})
>db.posts.find({tags:{$regex:"^tutorial"}})以tutorial开头
>db.posts.find({tags:{$regex:"tutorial$"}})以tutorial结尾
 

优化正则表达式查询:

  • 如果文档字段已被索引,查询将使用使用索引值的匹配正则表达式。 这使得搜索非常快,正则表达式相对于扫描整个集合。
  • 如果正则表达式是一个前缀表达式,所有的匹配是以某一串字符开始。例如,如果正则表达式 ^tut, 查询有只搜索那些开始串 tut.

转载于:https://www.cnblogs.com/wangjing666/p/6844452.html

mongodb 正则相关推荐

  1. MongoDB正则查询操作

    插入一条数据: {"_id" : ObjectId("61a83d5502bb260d1cec4e46"),"money" : 666,&q ...

  2. mongodb文档操作

    增 #1.没有指定_id则默认ObjectId,_id不能重复,且在插入后不可变#2.插入单条 user0={"name":"egon","age&q ...

  3. Mongodb 基本操作

    mongo简介 1.基于分布式文件存储的数据库.  为 WEB应用提供可扩展的高性能数据存储解决方案. 2.Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言, 几乎可 ...

  4. 数据库——MongoDB增删改查

    MongoDB增删改查操作 本文包含对数据库.集合以及文档的基本增删改查操作 数据库操作 #1.增 use config #如果数据库不存在,则创建并切换到该数据库,存在则直接切换到指定数据库.#2. ...

  5. 1月16日学习内容整理:存储库MongoDB之文档的增删改查操作补充

    文档操作 一.查 1.比较运算 # SQL:=,!=,>,<,>=,<= # MongoDB:{key:value}代表什么等于什么,"$ne"," ...

  6. mongoDB安装及使用

    一.简介 MongDB是一个面向文档的数据库,是非关系型数据库.此外,它不再有预定义模式(predefined schema):文档的键(key)和值(value)不再是固定的类型和大小. 二.Mon ...

  7. mongodb----集合而定多种查询方式

    易读模式(json格式) db.test.find().pretty() 限制查询条数 db.test.find().limit(3).pretty() 跳过条目(跳过前两条) db.test.fin ...

  8. mongodb java 多条件查询_MongoDB查询之高级操作详解(多条件查询、正则匹配查询等)...

    MongoDB查询之高级操作 语法介绍 MongoDB查询文档使用find()方法,同时find()方法以非结构化的方式来显示所有查询到的文档. -- 1.基本语法 db.collection.fin ...

  9. MongoDB 数据操作(二)数据查询(10)正则运算

    来源:我的博客站 OceanicKang |<MongoDB 数据操作(二)数据查询(10)正则运算> 上一篇:<MongoDB 数据操作(二)数据查询(9)条件过滤> 如果要 ...

  10. mongodb常用语句以及SpringBoot中使用mongodb

    普通查询 某个字段匹配数组内的元素数量的,假如region只有一个元素的 db.getCollection('map').find({region:{$size:1}}) 假如region只有0个元素 ...

最新文章

  1. lambda expressions are not supported at this language level
  2. teach-es6-2(class)
  3. Android深入四大组件(八)广播的注册、发送和接收过程
  4. 一篇文章理解深度神经网络5个常用激活函数
  5. 微机原理控制转移类指令
  6. 使用CoreImage教程
  7. 佛山高新区构建大数据产业新生态
  8. TP/TCP/UDP
  9. MySQL解压缩版配置安装详解【图解】
  10. Memory stream is not expandable
  11. pycharm: Error: Cannot run program……
  12. 基于FFmpeg的iOS播放器(结构篇)
  13. C++代码实现图片调色
  14. Python刷题系列(8)_Pandas_Dataframe
  15. MySQL函数计算24小时平均浓度对应的IAQI和AQI
  16. 针对《面试心得与总结—BAT、网易、蘑菇街》一文中出现的技术问题的收集与整理...
  17. 在元宇宙的概念之下,互联网与数字经济不再是水火不容的存在
  18. 光纤网卡和HBA卡有什么区别
  19. 生物信息学技术在罕见病研究中的应用
  20. 做自媒体影视短视频剪辑号,在哪儿下载素材?

热门文章

  1. 阿里云ECS+Nginx+nginx_rtmp_module+FFMPEG服务器搭建过程
  2. List分组 用于客服对话分组场景
  3. easyUI导入导出
  4. Dojo 1.7正式发布
  5. 学会 配置文件+反射,走遍全球都不怕.
  6. 冒泡法解决Jquery 下radio和checkbox的提交空值检查问题
  7. 算法习题---4-5IP网络(Uva1590)
  8. mybatis源码学习(二):SQL的执行过程
  9. Oracle的基本查询知识
  10. mysql添加一个字段(