MongoDB正则表达式及应用正则表达式及应用
mongodb中完全支持正则表达式,一般查询中可以使用操作符$regex,本文主要给大家介绍MongoDB正则表达
式及应用,介绍的非常详细,具有参考借鉴价值,需要的朋友可以参考下
正则表达式常用来在所有语言中搜索字符串的任何模式或文字。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"}})
优化正则表达式查询:优化正则表达式查询:
如果文档字段已被索引,查询将使用使用索引值的匹配正则表达式。 这使得搜索非常快,正则表达式相对于扫描整个集合。
如果正则表达式是一个前缀表达式,所有的匹配是以某一串字符开始。例如,如果正则表达式 ^tut, 查询有只搜索那些开始串
tut.
mongodb正则表达式应用
mongodb中完全支持正则表达式,一般查询中可以使用操作符$regex
db.lnmopy.find( { 'name': /*.lnmopy.com/i } )
db.lnmopy.find( { 'name': { $regex: '*.lnmopy.com', $options: 'i' } } )
评论0
最新资源