在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ 數(shù)據(jù)庫/ 正則表達(dá)式
更新文檔
GridFS
Rockmongo 管理工具
Map Reduce
Java
創(chuàng)建備份
數(shù)據(jù)模型
創(chuàng)建數(shù)據(jù)庫
映射
查詢文檔
索引限制
ObjectId
刪除文檔
數(shù)據(jù)類型
高級索引
索引
優(yōu)勢
記錄排序
查詢分析
插入文檔
刪除集合
全文檢索
創(chuàng)建集合
概述
數(shù)據(jù)庫引用
覆蓋索引查詢
安裝環(huán)境
PHP
刪除數(shù)據(jù)庫
固定集合
關(guān)系
聚合
自動增長
復(fù)制
限制記錄
部署
分片
正則表達(dá)式
原子操作

正則表達(dá)式

正則表達(dá)式在所有語言當(dāng)中都是經(jīng)常會用到的一個功能,可以用來搜索模式或字符串中的單詞。MongoDB 也提供了這一功能,使用 $regex 運(yùn)算符來匹配字符串模式。MongoDB 使用 PCRE(可兼容 Perl 的正則表達(dá)式)作為正則表達(dá)式語言。

與文本搜索不同,使用正則表達(dá)式不需要使用任何配置或命令。

假如 posts 集合有下面這個文檔,它包含著帖子文本及其標(biāo)簽。

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

使用正則表達(dá)式

使用下列正則表達(dá)式來搜索包含 tutorialspoint 的所有帖子。

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

同樣的查詢也可以寫作下列形式:

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

使用不區(qū)分大小寫的正則表達(dá)式

要想使搜索不區(qū)分大小寫,使用 $options 參數(shù)和值 $i。下列命令將搜索包含 “tutorialspoint” 的字符串,不區(qū)分大小寫。

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

該查詢返回的一個結(jié)果文檔中含有不同大小寫的 “tutorialspoint” 文本。

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

使用正則表達(dá)式來處理數(shù)組元素

我們還可以在數(shù)組字段上使用正則表達(dá)式。在實(shí)現(xiàn)標(biāo)簽的功能時,這尤為重要。假如想搜索標(biāo)簽以 “tutorial” 開始(tutorial、tutorials、tutorialpoint 或 tutorialphp)的帖子,可以使用下列代碼:

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

優(yōu)化正則表達(dá)式查詢

  • 如果文檔字段已經(jīng)設(shè)置了索引,查詢將使用索引值來匹配正則表達(dá)式,從而使查詢效率相對于掃描整個集合的正則表達(dá)式而言大大提高。
  • 如果正則表達(dá)式為前綴表達(dá)式,所有的匹配結(jié)果都要在前面帶有特殊的前綴字符串。比如,如果正則表達(dá)式為 ^tut,那么查詢將搜索所有以 tut 開始的字符串。
上一篇:固定集合下一篇:ObjectId