MongoDB - 正则

MongoDB - 正则 首页 / MongoDB入门教程 / MongoDB - 正则

在所有语言中,经常使用正则表达式来搜索任何字符串中的模式或单词, MongoDB还提供了使用 $regex 运算符进行字符串模式匹配。

与文本搜索不同,无涯教程不需要进行任何配置或命令即可使用正则表达式。

考虑 posts 集合下的以下文档结构,其中包含帖子文本及其标签-

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

使用正则表达式

以下正则表达式查询搜索其中所有包含字符串 learnfk 的帖子-

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

相同的查询也可以写成-

链接:https://www.learnfk.comhttps://www.learnfk.com/mongodb/mongodb-regular-expression.html

来源:LearnFk无涯教程网

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

不区分大小写

为了使搜索不区分大小写,无涯教程使用值为 $i 的 $options 参数。以下命令将查找具有单词 learnfk 的字符串,而不考虑大小写或小写字母-

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

该查询返回的输出之一是以下文档,其中包含单词 learnfk 在不同情况下-

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

数组正则表达式

无涯教程还可以在数组字段上使用正则表达式的概念。如果您要搜索所有带有单词单词回肠荡气(tutorial或tutorialphp)开头的标签的帖子,则可以使用以下代码-

>db.posts.find({tags:{$regex:"tutorial"}})

优化正则查询

  • 如果文档字段已被索引,则查询将使用索引值来匹配正则表达式,与正则表达式扫描整个集合相比,这使搜索非常快。

    无涯教程网

  • 如果正则表达式是前缀表达式,则所有匹配项均应以某个字符串字符开头,如果正则表达式为 ^ tut ,则查询只需搜索以 tut 开头的字符串。

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

深入拆解Tomcat & Jetty -〔李号双〕

全栈工程师修炼指南 -〔熊燚(四火)〕

NLP实战高手课 -〔王然〕

Kafka核心源码解读 -〔胡夕〕

Flink核心技术与实战 -〔张利兵〕

说透芯片 -〔邵巍〕

云计算的必修小课 -〔吕蕴偲〕

手把手带你写一个MiniSpring -〔郭屹〕

PPT设计进阶 · 从基础操作到高级创意 -〔李金宝(Bobbie)〕

好记忆不如烂笔头。留下您的足迹吧 :)