• <menu id="w2i4a"></menu>
  • logo Navicat使用教程-2019.1

    文檔首頁>>Navicat使用教程-2019.1>>Navicat使用教程:在MongoDB中執(zhí)行正則表達(dá)式搜索

    Navicat使用教程:在MongoDB中執(zhí)行正則表達(dá)式搜索


    正則表達(dá)式(regex)提供了一種將字符串與模式進(jìn)行匹配的方法,以使您的搜索“模糊”而不是精確。MongoDB內(nèi)置有一個正則表達(dá)式引擎,因此即使您不確切知道要查找的確切Field值是多少,您也可以對其進(jìn)行挖掘。在今天的文章中,我們將使用Navicat for MongoDB學(xué)習(xí)如何在MongoDB中使用正則表達(dá)式。Navicat Premium 12.1也支持MongoDB哦~

    Navicat Premium是一個可連接多種數(shù)據(jù)庫的管理工具,它可以讓你以單一程序同時連接到MySQL、Oracle及PostgreSQL數(shù)據(jù)庫,讓管理不同類型的數(shù)據(jù)庫更加的方便。

    點(diǎn)擊下載Navicat Premium正式版

    基本語法

    MongoDB提供了正則表達(dá)式運(yùn)算符,用于在集合中搜索字符串。下面的示例顯示了如何使用Sakila示例數(shù)據(jù)庫完成此操作:

    假設(shè)我們想查找名為“DAN”、“DANNY”甚至“DANIEL”的電影。這是執(zhí)行此操作的語句:

    db.film_list.find({actors:{$ regex:“ DAN”}})

    成功執(zhí)行命令后,將顯示以下輸出:

    Navicat使用教程:在MongoDB中執(zhí)行正則表達(dá)式搜索

    我們可以通過刪除“$ regex:”限定符并將搜索字符串括在正斜杠(/)而不是引號中來簡化語句,因為正斜杠表示正則表達(dá)式:

    db.film_list.find({actors:/ DAN /})

    使用多個搜索字符串進(jìn)行搜索

    我們可以在搜索字符串中包含多個以匹配各種組合。假設(shè)我們想通過匹配“Carrie Moss”或“moss carrie-anne”來查找Carrie-Anne Moss的電影。這是執(zhí)行此操作的語句:

    db.film_list.find(
       { actors: { $elemMatch: { actors: /Moss/i, actors: /carrie-anne/i } } }
    );

    $ elemMatch將返回這些記錄,其中數(shù)組元素匹配兩個條件。相反,如果使用不帶$ elemMatch的純$和(這是標(biāo)準(zhǔn)列表的默認(rèn)設(shè)置),則返回的電影將帶有“Carrie-Anne Moss”,但也帶有“Sandra Moss”和“Carrie-Anne Fisher”的那些電影。那將更多地是我們要檢索的信息的超集。還要注意“i”標(biāo)志;它使正則表達(dá)式不區(qū)分大小寫。這對于用戶輸入的搜索很有用,因為我們不能依賴用戶使用大小寫混合。

    選項參數(shù)

    我們還可以通過options參數(shù)為正則表達(dá)式提供其他說明。

    • i:不區(qū)分大小寫以匹配大小寫。

    • m:對于包含錨點(diǎn)的模式(即,^表示開始,$表示結(jié)束),請在每行的開頭或結(jié)尾匹配具有多行值的字符串。如果沒有此選項,這些錨點(diǎn)將在字符串的開頭或結(jié)尾匹配。

    • x:擴(kuò)展功能可以忽略$ regex模式中的所有空白字符,除非轉(zhuǎn)義或包含在字符類中。與其他標(biāo)志不同,此標(biāo)志需要$ regex和$ options語法

    • s:允許點(diǎn)字符(.)匹配所有字符,包括換行符。

    結(jié)論

    $ regex運(yùn)算符提供了MongoDB中模式匹配的簡便方法。為了獲得最佳結(jié)果,請確保對要搜索的文檔字段建立索引。這樣,查詢將使用索引值來匹配正則表達(dá)式。與正則表達(dá)式掃描整個集合相比,這使搜索非常快。


    想要購買Navicat Premium正版授權(quán),或了解更多產(chǎn)品信息請點(diǎn)擊“咨詢在線客服”

    850×68.png

    掃碼咨詢


    添加微信 立即咨詢

    電話咨詢

    客服熱線
    023-68661681

    TOP
    三级成人熟女影院,欧美午夜成人精品视频,亚洲国产成人乱色在线观看,色中色成人论坛 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();