《MongoDB 正則表達式》要點:
本文介紹了MongoDB 正則表達式,希望對您有用。如果有疑問,可以聯(lián)系我們。
相關(guān)主題:非關(guān)系型數(shù)據(jù)庫
歡迎參與《MongoDB 正則表達式》討論,分享您的想法,維易PHP學(xué)院為您提供專業(yè)教程。
正則表達式是使用單個字符串來描述、匹配一系列符合某個句律例則的字符串.
許多法式設(shè)計語言都支持利用正則表達式進行字符串操作.
MongoDB 使用 $regex 操作符來設(shè)置匹配字符串的正則表達式.
MongoDB使用PCRE (Perl Compatible Regular Expression) 作為正則表達式語言.
不同于全文檢索,我們使用正則表達式不必要做任何配置.
考慮以下 posts 集合的文檔結(jié)構(gòu),該文檔包括了文章內(nèi)容和標簽:
{
"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/})
不區(qū)分年夜小寫的正則表達式
如果檢索必要不區(qū)分大小寫,我們可以設(shè)置 $options 為 $i.
以下命令將查找不區(qū)分年夜小寫的字符串 w3cschool.cc:
>db.posts.find({post_text:{$regex:"w3cschool.cc",$options:"$i"}})
集合中會返回所有包括字符串 w3cschool.cc 的數(shù)據(jù),且不區(qū)分大小寫:
{
"_id" : ObjectId("53493d37d852429c10000004"),
"post_text" : "hey! this is my post on W3Cschool.cc",
"tags" : [ "tutorialspoint" ]}
數(shù)組元素使用正則表達式
我們還可以在數(shù)組字段中使用正則表達式來查找內(nèi)容. 這在標簽的實現(xiàn)上非常有用,如果你需要查找包括以 tutorial 開頭的標簽數(shù)據(jù)(tutorial 或 tutorials 或 tutorialpoint 或 tutorialphp), 你可以使用以下代碼:
>db.posts.find({tags:{$regex:"tutorial"}})
優(yōu)化正則表達式查詢
如果你的文檔中字段設(shè)置了索引,那么使用索引相比于正則表達式匹配查找所有的數(shù)據(jù)查詢速度更快.
如果正則表達式是前綴表達式,所有匹配的數(shù)據(jù)將以指定的前綴字符串為開端.例如: 如果正則表達式為 ^tut ,查詢語句將查找以 tut 為開頭的字符串.
這里面使用正則表達式有兩點必要注意:
正則表達式中使用變量.必定要使用eval將組合的字符串進行轉(zhuǎn)換,不能直接將字符串拼接后傳入給表達式.否則沒有報錯信息,只是結(jié)果為空!實例如下:
var name=eval("/" + 變量值key +"/i");
以下是模糊查詢包括title關(guān)鍵詞, 且不區(qū)分大小寫:
title:eval("/"+title+"/i") // 等同于 title:{$regex:title,$Option:"$i"}
如您還有不明確的可以在下面與我留言或是與我探討QQ群308855039,我們一起飛!
轉(zhuǎn)載請注明本頁網(wǎng)址:
http://www.snjht.com/jiaocheng/10252.html