翻譯|使用教程|編輯:莫成敏|2019-11-15 15:50:15.693|閱讀 1347 次
概述:正則表達式(regex)提供了一種將字符串與模式進行匹配的方法,以使您的搜索“模糊”而不是精確。在今天的文章中,我們將學習如何在MongoDB中使用正則表達式。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
正則表達式(regex)提供了一種將字符串與模式進行匹配的方法,以使您的搜索“模糊”而不是精確。MongoDB內置有一個正則表達式引擎,因此即使您不確切知道要查找的確切Field值是多少,您也可以對其進行挖掘。在今天的文章中,我們將使用Navicat for MongoDB學習如何在MongoDB中使用正則表達式。Navicat Premium 12.1也支持MongoDB哦~
Navicat Premium是一個可連接多種數據庫的管理工具,它可以讓你以單一程序同時連接到MySQL、Oracle及PostgreSQL數據庫,讓管理不同類型的數據庫更加的方便。
基本語法
MongoDB提供了正則表達式運算符,用于在集合中搜索字符串。下面的示例顯示了如何使用Sakila示例數據庫完成此操作:
假設我們想查找名為“DAN”、“DANNY”甚至“DANIEL”的電影。這是執行此操作的語句:
db.film_list.find({actors:{$ regex:“ DAN”}})
成功執行命令后,將顯示以下輸出:
我們可以通過刪除“$ regex:”限定符并將搜索字符串括在正斜杠(/)而不是引號中來簡化語句,因為正斜杠表示正則表達式:
db.film_list.find({actors:/ DAN /})
使用多個搜索字符串進行搜索
我們可以在搜索字符串中包含多個以匹配各種組合。假設我們想通過匹配“Carrie Moss”或“moss carrie-anne”來查找Carrie-Anne Moss的電影。這是執行此操作的語句:
db.film_list.find( { actors: { $elemMatch: { actors: /Moss/i, actors: /carrie-anne/i } } } );
$ elemMatch將返回這些記錄,其中數組元素匹配兩個條件。相反,如果使用不帶$ elemMatch的純$和(這是標準列表的默認設置),則返回的電影將帶有“Carrie-Anne Moss”,但也帶有“Sandra Moss”和“Carrie-Anne Fisher”的那些電影。那將更多地是我們要檢索的信息的超集。還要注意“i”標志;它使正則表達式不區分大小寫。這對于用戶輸入的搜索很有用,因為我們不能依賴用戶使用大小寫混合。
選項參數
我們還可以通過options參數為正則表達式提供其他說明。
i:不區分大小寫以匹配大小寫。
m:對于包含錨點的模式(即,^表示開始,$表示結束),請在每行的開頭或結尾匹配具有多行值的字符串。如果沒有此選項,這些錨點將在字符串的開頭或結尾匹配。
x:擴展功能可以忽略$ regex模式中的所有空白字符,除非轉義或包含在字符類中。與其他標志不同,此標志需要$ regex和$ options語法
s:允許點字符(.)匹配所有字符,包括換行符。
結論
$ regex運算符提供了MongoDB中模式匹配的簡便方法。為了獲得最佳結果,請確保對要搜索的文檔字段建立索引。這樣,查詢將使用索引值來匹配正則表達式。與正則表達式掃描整個集合相比,這使搜索非常快。
想要購買Navicat Premium正版授權,或了解更多產品信息請點擊
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自: