a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 數(shù)據(jù)庫 > MongoDB > 正文

MongoDB正則表達式及應(yīng)用

2020-03-22 17:10:06
字體:
供稿:網(wǎng)友
html' target='_blank'>正則表達式常用來在所有語言中搜索字符串的任何模式或文字。MongoDB還提供了正則表達式功能的字符串模式使用正則表達式$regex操作符。MongoDB使用PCRE(Perl兼容正則表達式)為正則表達式語言。不同于文本搜索,我們不需要做任何配置或命令就能直接使用正則表達式。考慮下包含文字后其標簽的帖子集合,文檔結(jié)構(gòu)如以下: "post_text": "enjoy the mongodb articles on yiibai", "tags": [ "mongodb", "yiibai"使用正則表達式表達下面的正則表達式查詢搜索所有包含字符串 yiibai.com 的帖子:www.lnmopy.com", "site" : "website", "tag" : "l,n,m,o,p,y"}
{ "_id" : ObjectId("502dd63d16a25b1ff6000000"), "name" : "demo.lnmopy.com", "site" : "unknown", "tag" : "d,e,m,o"}
{ "_id" : ObjectId("502dd63d16a25b1ff6000000"), "name" : "welcome.lnmopy.com", "site" : "website", "tag" : "w,e,l,c,o,m,e"}mongodb的正則表達式僅支持i和m的javascript原生寫法(如/*.lnmopy.com/i)。如果要是用x和s選項就必須使用“$regex”操作符并在“$options”中指定選項。
使用正則表達式的更新操作:
db.lnmopy.update( { 'name': /*.lnmopy.com/i }, { $set: { 'site':'www.lnmopy.com' } } );
意思是,查找當前數(shù)據(jù)庫中名為“l(fā)nmopy”的集合中“name”字段符合“/*.lnmopy.com/i”正則的條目,并只將“site”字段更新為“www.lnmopy.com”,該條更新語句僅更新一條數(shù)據(jù),如果不是用$set,那么這條記錄就會只剩下你更新的部分和默認的ObjectId,可以說是替換了。如果想替換所有,可以加入?yún)?shù):
db.lnmopy.update( { 'name': /*.lnmopy.com/i }, { $set: { 'site':'www.lnmopy.com' } } , false, true);
參數(shù)有順序,false是upsert,如果沒有就插入新的。true就是multi多條記錄更新,所有匹配到的結(jié)果。或者直接指定{ multi: true }:
db.lnmopy.update( { 'name': /*.lnmopy.com/i }, { $set: { 'site':'www.lnmopy.com' } } , { multi: true });
這樣就把所有的“site”字段全都更新為“www.lnmopy.com”了。我設(shè)計的字段“tag”有個缺陷,就是本來是一個單詞,現(xiàn)在每個字母都被“,“分隔開了。實際工作中也存在類似問題,由于批量轉(zhuǎn)換數(shù)據(jù),或者其他程序操作不當,或者業(yè)務(wù)需求更改等等原因需要對某些字段進行正則批量處理,mongodb的一般更新方法是不能實現(xiàn)的,這時就需要使用javascript語句。正則表達式替換查詢結(jié)果中','為”
db.lnmopy.find().forEach( function(u) { u.tag = u.tag.replace(//,/, ""); db.lnmopy.save(u); } );最后執(zhí)行
db.lnmopy.find()
顯示如下數(shù)據(jù):
{ "_id" : ObjectId("502dd63d16a25b1ff6000000"), "name" : "www.lnmopy.com", "site" : "www.lnmopy.com", "tag" : "lnmopy"}
{ "_id" : ObjectId("502dd63d16a25b1ff6000000"), "name" : "demo.lnmopy.com", "site" : "www.lnmopy.com", "tag" : "demo"}
{ "_id" : ObjectId("502dd63d16a25b1ff6000000"), "name" : "welcome.lnmopy.com", "site" : "www.lnmopy.com", "tag" : "welcome"}后記:javascript是mongodb的一大特色,也是優(yōu)勢,很多復雜的查詢和處理都可以用javascript實現(xiàn),要注意的是,javascript的工作效率較低,原則上應(yīng)該盡量避免在主要業(yè)務(wù)邏輯中大量使用。類比的講,javascript就相當于oracle的存儲過程,介于10gen(mongodb的開發(fā)團隊)是由oracle出來的這點,就一點也不奇怪了。關(guān)于如何使用更復雜的javascript,以后會寫到。PHP教程

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 最新日韩精品在线观看 | 国产精品久久久久久久久久妞妞 | 狠狠色丁香婷婷综合 | 日韩综合 | 国产一区二区免费视频 | 国产乱淫av片 | 一区二区三区免费看 | 羞羞视频免费观看 | 中文字幕 在线观看 | 精品乱子伦一区二区三区 | 四虎影视最新网址 | 精品视频在线观看 | 色综合天天 | 蜜桃精品久久久久久久免费影院 | 国产亚洲一区二区三区在线 | 成人在线一区二区三区 | 日批在线观看 | 国产视频一区二区 | 中文字幕第一区 | 亚洲1区2区在线 | 欧美国产日韩一区 | 国产精品99一区二区三区 | 国产精品视频一区二区三区 | 久久久久无码国产精品一区 | 日韩欧美在线看 | 欧美日韩电影一区二区三区 | 亚洲精品1 | 精品欧美一区二区三区久久久 | 午夜影院在线观看免费 | 亚洲精品国产第一综合99久久 | 91精品国产高清一区二区三区 | 国产精品久久久久久久一区探花 | 美女国产网站 | 成人欧美一区二区三区在线播放 | 日本精品一区二区三区视频 | 欧美日韩精品区 | 国产精品中文 | 亚洲成人免费观看 | 在线观看va | 亚洲视频精品一区 | 日韩一区在线观看视频 |