Mongodb 简明教程
MongoDB - Regular Expression
正则表达式经常用于各种语言中,以在任意字符串中搜索某个模式或单词。MongoDB 还提供正则表达式功能,用于使用 $regex 运算符进行字符串模式匹配。MongoDB 将 PCRE(Perl 兼容正则表达式)用作正则表达式语言。
不同于文本搜索,我们无需执行任何配置或命令即可使用正则表达式。
假设我们在名为 posts 的数据库中插入了一个文档,如下所示:
> db.posts.insert(
{
"post_text": "enjoy the mongodb articles on tutorialspoint",
"tags": [
"mongodb",
"tutorialspoint"
]
}
WriteResult({ "nInserted" : 1 })
Using regex Expression
以下正则表达式查询搜索其中包含字符串 tutorialspoint 的所有帖子:
> db.posts.find({post_text:{$regex:"tutorialspoint"}}).pretty()
{
"_id" : ObjectId("5dd7ce28f1dd4583e7103fe0"),
"post_text" : "enjoy the mongodb articles on tutorialspoint",
"tags" : [
"mongodb",
"tutorialspoint"
]
}
{
"_id" : ObjectId("5dd7d111f1dd4583e7103fe2"),
"post_text" : "enjoy the mongodb articles on tutorialspoint",
"tags" : [
"mongodb",
"tutorialspoint"
]
}
>
同样的查询还可以这样编写:
>db.posts.find({post_text:/tutorialspoint/})
Using regex Expression with Case Insensitive
要使搜索不区分大小写,我们可以使用值 $i 的 $options 参数。以下命令无论大小写都会查找包含单词 tutorialspoint 的字符串:
>db.posts.find({post_text:{$regex:"tutorialspoint",$options:"$i"}})
此查询返回的结果之一是包含单词 tutorialspoint (大小写不一致)的以下文档:
{
"_id" : ObjectId("53493d37d852429c10000004"),
"post_text" : "hey! this is my post on TutorialsPoint",
"tags" : [ "tutorialspoint" ]
}