# MongoDB 正則表達式
正則表達式是使用單個字符串來描述、匹配一系列符合某個句法規則的字符串。
許多程序設計語言都支持利用正則表達式進行字符串操作。
MongoDB 使用 **$regex** 操作符來設置匹配字符串的正則表達式。
MongoDB使用PCRE (Perl Compatible Regular Expression) 作為正則表達式語言。
不同于全文檢索,我們使用正則表達式不需要做任何配置。
考慮以下 **posts** 集合的文檔結構,該文檔包含了文章內容和標簽:
```
{
"post_text": "enjoy the mongodb articles on tutorialspoint",
"tags": [
"mongodb",
"tutorialspoint"
]
}
```
## 使用正則表達式
以下命令使用正則表達式查找包含 w3cschool.cc 字符串的文章:
```
>db.posts.find({post_text:{$regex:"w3cschool.cc"}})
```
以上查詢也可以寫為:
```
>db.posts.find({post_text:/w3cschool.cc/})
```
## 不區分大小寫的正則表達式
如果檢索需要不區分大小寫,我們可以設置 $options 為 $i。
以下命令將查找不區分大小寫的字符串 w3cschool.cc:
```
>db.posts.find({post_text:{$regex:"w3cschool.cc",$options:"$i"}})
```
集合中會返回所有包含字符串 w3cschool.cc 的數據,且不區分大小寫:
```
{
"_id" : ObjectId("53493d37d852429c10000004"),
"post_text" : "hey! this is my post on W3Cschool.cc",
"tags" : [ "tutorialspoint" ]
}
```
## 數組元素使用正則表達式
我們還可以在數組字段中使用正則表達式來查找內容。 這在標簽的實現上非常有用,如果你需要查找包含以 tutorial 開頭的標簽數據(tutorial 或 tutorials 或 tutorialpoint 或 tutorialphp), 你可以使用以下代碼:
```
>db.posts.find({tags:{$regex:"tutorial"}})
```
## 優化正則表達式查詢
* 如果你的文檔中字段設置了索引,那么使用索引相比于正則表達式匹配查找所有的數據查詢速度更快。
* 如果正則表達式是前綴表達式,所有匹配的數據將以指定的前綴字符串為開始。例如: 如果正則表達式為 **^tut** ,查詢語句將查找以 tut 為開頭的字符串。
- NoSQL 簡介
- 什么是MongoDB ?
- window平臺安裝 MongoDB
- Linux平臺安裝MongoDB
- MongoDB 數據庫,對象,集合
- MongoDB - 連接
- PHP安裝MongoDB擴展驅動
- MongoDB 數據插入
- MongoDB使用update()函數更新數據
- MongoDB使用- remove()函數刪除數據
- MongoDB 查詢
- MongoDB條件操作符
- MongoDB條件操作符 - $type
- MongoDB Limit與Skip方法
- MongoDB 排序
- MongoDB 索引
- MongoDB 聚合
- MongoDB 復制(副本集)
- MongoDB 分片
- MongoDB 備份(mongodump)與恢復(mongorerstore)
- MongoDB 監控
- MongoDB Java
- MongoDB PHP
- MongoDB 關系
- MongoDB 數據庫引用
- MongoDB 覆蓋索引查詢
- MongoDB 查詢分析
- MongoDB 原子操作
- MongoDB 高級索引
- MongoDB 索引限制
- MongoDB ObjectId
- MongoDB Map Reduce
- MongoDB 全文檢索
- MongoDB 正則表達式
- MongoDB 管理工具: Rockmongo
- MongoDB GridFS
- MongoDB 固定集合(Capped Collections)
- MongoDB 自動增長
- 免責聲明