中文字幕一区二区人妻电影,亚洲av无码一区二区乱子伦as ,亚洲精品无码永久在线观看,亚洲成aⅴ人片久青草影院按摩,亚洲黑人巨大videos

MongoDB 正則表達(dá)式

正則表達(dá)式是使用單個(gè)字符串來描述、匹配一系列符合某個(gè)句法規(guī)則的字符串。

許多程序設(shè)計(jì)語言都支持利用正則表達(dá)式進(jìn)行字符串操作。

MongoDB 使用 $regex 操作符來設(shè)置匹配字符串的正則表達(dá)式。

MongoDB使用PCRE (Perl Compatible Regular Expression) 作為正則表達(dá)式語言。

不同于全文檢索,我們使用正則表達(dá)式不需要做任何配置。

考慮以下 posts 集合的文檔結(jié)構(gòu),該文檔包含了文章內(nèi)容和標(biāo)簽:

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

使用正則表達(dá)式

以下命令使用正則表達(dá)式查找包含 json 字符串的文章:

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

以上查詢也可以寫為:

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

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

如果檢索需要不區(qū)分大小寫,我們可以設(shè)置 $options 為 $i。

以下命令將查找不區(qū)分大小寫的字符串 json:

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

集合中會返回所有包含字符串 json 的數(shù)據(jù),且不區(qū)分大小寫:

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

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

我們還可以在數(shù)組字段中使用正則表達(dá)式來查找內(nèi)容。 這在標(biāo)簽的實(shí)現(xiàn)上非常有用,如果你需要查找包含以 run 開頭的標(biāo)簽數(shù)據(jù)(ru 或 run 或 json), 你可以使用以下代碼:

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

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

  • 如果你的文檔中字段設(shè)置了索引,那么使用索引相比于正則表達(dá)式匹配查找所有的數(shù)據(jù)查詢速度更快。

  • 如果正則表達(dá)式是前綴表達(dá)式,所有匹配的數(shù)據(jù)將以指定的前綴字符串為開始。例如: 如果正則表達(dá)式為 ^tut ,查詢語句將查找以 tut 為開頭的字符串。

這里面使用正則表達(dá)式有兩點(diǎn)需要注意:

正則表達(dá)式中使用變量。一定要使用eval將組合的字符串進(jìn)行轉(zhuǎn)換,不能直接將字符串拼接后傳入給表達(dá)式。否則沒有報(bào)錯(cuò)信息,只是結(jié)果為空!實(shí)例如下:

var name=eval("/" + 變量值key +"/i"); 

以下是模糊查詢包含title關(guān)鍵詞, 且不區(qū)分大小寫:

title:eval("/"+title+"/i")    // 等同于 title:{$regex:title,$Option:"$i"}