国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MongoDB > 正文

MongoDB正則表達式及應用

2020-03-22 17:10:06
字體:
來源:轉載
供稿:網友
html' target='_blank'>正則表達式常用來在所有語言中搜索字符串的任何模式或文字。MongoDB還提供了正則表達式功能的字符串模式使用正則表達式$regex操作符。MongoDB使用PCRE(Perl兼容正則表達式)為正則表達式語言。不同于文本搜索,我們不需要做任何配置或命令就能直接使用正則表達式??紤]下包含文字后其標簽的帖子集合,文檔結構如以下: "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' } } );
意思是,查找當前數據庫中名為“lnmopy”的集合中“name”字段符合“/*.lnmopy.com/i”正則的條目,并只將“site”字段更新為“www.lnmopy.com”,該條更新語句僅更新一條數據,如果不是用$set,那么這條記錄就會只剩下你更新的部分和默認的ObjectId,可以說是替換了。如果想替換所有,可以加入參數:
db.lnmopy.update( { 'name': /*.lnmopy.com/i }, { $set: { 'site':'www.lnmopy.com' } } , false, true);
參數有順序,false是upsert,如果沒有就插入新的。true就是multi多條記錄更新,所有匹配到的結果?;蛘咧苯又付▄ multi: true }:
db.lnmopy.update( { 'name': /*.lnmopy.com/i }, { $set: { 'site':'www.lnmopy.com' } } , { multi: true });
這樣就把所有的“site”字段全都更新為“www.lnmopy.com”了。我設計的字段“tag”有個缺陷,就是本來是一個單詞,現在每個字母都被“,“分隔開了。實際工作中也存在類似問題,由于批量轉換數據,或者其他程序操作不當,或者業務需求更改等等原因需要對某些字段進行正則批量處理,mongodb的一般更新方法是不能實現的,這時就需要使用javascript語句。正則表達式替換查詢結果中','為”
db.lnmopy.find().forEach( function(u) { u.tag = u.tag.replace(//,/, ""); db.lnmopy.save(u); } );最后執行
db.lnmopy.find()
顯示如下數據:
{ "_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的一大特色,也是優勢,很多復雜的查詢和處理都可以用javascript實現,要注意的是,javascript的工作效率較低,原則上應該盡量避免在主要業務邏輯中大量使用。類比的講,javascript就相當于oracle的存儲過程,介于10gen(mongodb的開發團隊)是由oracle出來的這點,就一點也不奇怪了。關于如何使用更復雜的javascript,以后會寫到。PHP教程

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 常德市| 东兰县| 武陟县| 临猗县| 武城县| 海淀区| 哈密市| 华容县| 罗江县| 临猗县| 定兴县| 大石桥市| 安陆市| 八宿县| 大理市| 澄江县| 曲周县| 工布江达县| 航空| 纳雍县| 霞浦县| 神池县| 阳城县| 梨树县| 无为县| 田东县| 会昌县| 茌平县| 桑植县| 德兴市| 安平县| 双鸭山市| 谷城县| 杭锦旗| 永顺县| 贡觉县| 泰宁县| 马尔康县| 北辰区| 哈尔滨市| 肥西县|