新聞中心
MongoDB 正則表達式
正則表達式是使用單個字符串來描述、匹配一系列符合某個句法規(guī)則的字符串。

主要從事網(wǎng)頁設計、PC網(wǎng)站建設(電腦版網(wǎng)站建設)、wap網(wǎng)站建設(手機版網(wǎng)站建設)、響應式網(wǎng)站設計、程序開發(fā)、微網(wǎng)站、微信小程序開發(fā)等,憑借多年來在互聯(lián)網(wǎng)的打拼,我們在互聯(lián)網(wǎng)網(wǎng)站建設行業(yè)積累了豐富的成都做網(wǎng)站、成都網(wǎng)站建設、網(wǎng)絡營銷經(jīng)驗,集策劃、開發(fā)、設計、營銷、管理等多方位專業(yè)化運作于一體,具備承接不同規(guī)模與類型的建設項目的能力。
許多程序設計語言都支持利用正則表達式進行字符串操作。
MongoDB 使用$regex操作符來設置匹配字符串的正則表達式。
MongoDB使用PCRE (Perl Compatible Regular Expression) 作為正則表達式語言。
不同于全文檢索,我們使用正則表達式不需要做任何配置。
考慮以下posts集合的文檔結構,該文檔包含了文章內(nèi)容和標簽:
{
"post_text": "enjoy the mongodb articles on runoob",
"tags": [
"mongodb",
"runoob"
]
}
使用正則表達式
以下命令使用正則表達式查找包含 runoob 字符串的文章:
>db.posts.find({post_text:{$regex:"runoob"}})
以上查詢也可以寫為:
>db.posts.find({post_text:/runoob/})
不區(qū)分大小寫的正則表達式
如果檢索需要不區(qū)分大小寫,我們可以設置 $options 為 $i。
以下命令將查找不區(qū)分大小寫的字符串 runoob:
>db.posts.find({post_text:{$regex:"runoob",$options:"$i"}})
集合中會返回所有包含字符串 runoob 的數(shù)據(jù),且不區(qū)分大小寫:
{
"_id" : ObjectId("53493d37d852429c10000004"),
"post_text" : "hey! this is my post on runoob",
"tags" : [ "runoob" ]
}
數(shù)組元素使用正則表達式
我們還可以在數(shù)組字段中使用正則表達式來查找內(nèi)容。 這在標簽的實現(xiàn)上非常有用,如果你需要查找包含以 run 開頭的標簽數(shù)據(jù)(ru 或 run 或 runoob), 你可以使用以下代碼:
>db.posts.find({tags:{$regex:"run"}})
優(yōu)化正則表達式查詢
- 如果你的文檔中字段設置了索引,那么使用索引相比于正則表達式匹配查找所有的數(shù)據(jù)查詢速度更快。
- 如果正則表達式是前綴表達式,所有匹配的數(shù)據(jù)將以指定的前綴字符串為開始。例如: 如果正則表達式為 ^tut,查詢語句將查找以 tut 為開頭的字符串。
這里面使用正則表達式有兩點需要注意:
正則表達式中使用變量。一定要使用eval將組合的字符串進行轉換,不能直接將字符串拼接后傳入給表達式。否則沒有報錯信息,只是結果為空!實例如下:
var name=eval("/" + 變量值key +"/i"); 以下是模糊查詢包含title關鍵詞, 且不區(qū)分大小寫:
title:eval("/"+title+"/i") // 等同于 title:{$regex:title,$Option:"$i"}
網(wǎng)站欄目:創(chuàng)新互聯(lián)MongoDB教程:MongoDB正則表達式
本文路徑:http://www.dlmjj.cn/article/dhdpggs.html


咨詢
建站咨詢
