MongoDB中regex操作符的介紹

regex操作符的介紹

MongoDB使用$regex操作符來設置匹配字符串的正則表達式,使用PCRE(Pert Compatible Regular Expression)作爲正則表達式語言。

regex操作符
{<field>:{$regex:/pattern/,$options:’<options>’}}
{<field>:{$regex:’pattern’,$options:’<options>’}}
{<field>:{$regex:/pattern/<options>}}
正則表達式對象
{<field>: /pattern/<options>}
$regex與正則表達式對象的區別:

在$in操作符中只能使用正則表達式對象,例如:{name:{$in:[/^joe/i,/^jack/}}
在使用隱式的$and操作符中,只能使用$regex,例如:{name:{$regex:/^jo/i, $nin:['john']}}
當option選項中包含X或S選項時,只能使用$regex,例如:{name:{$regex:/m.*line/,$options:"si"}}
$regex操作符的使用

$regex操作符中的option選項可以改變正則匹配的默認行爲,它包括i, m, x以及S四個選項,其含義如下

i 忽略大小寫,{<field>{$regex/pattern/i}},設置i選項後,模式中的字母會進行大小寫不敏感匹配。
m 多行匹配模式,{<field>{$regex/pattern/,$options:'m'},m選項會更改^和$元字符的默認行爲,分別使用與行的開頭和結尾匹配,而不是與輸入字符串的開頭和結尾匹配。
x 忽略非轉義的空白字符,{<field>:{$regex:/pattern/,$options:'m'},設置x選項後,正則表達式中的非轉義的空白字符將被忽略,同時井號(#)被解釋爲註釋的開頭注,只能顯式位於option選項中。
s 單行匹配模式{<field>:{$regex:/pattern/,$options:'s'},設置s選項後,會改變模式中的點號(.)元字符的默認行爲,它會匹配所有字符,包括換行符(\n),只能顯式位於option選項中。
使用$regex操作符時,需要注意下面幾個問題:

i,m,x,s可以組合使用,例如:{name:{$regex:/j*k/,$options:"si"}}
在設置索弓}的字段上進行正則匹配可以提高查詢速度,而且當正則表達式使用的是前綴表達式時,查詢速度會進一步提高,例如:{name:{$regex: /^joe/}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章