MongoDB之資料查詢(正規表示式)
如果要想實現模糊查詢,那麼必須使用正規表示式,使用的是與Perl相容的正規表示式的形式。
如果要想實現正規表示式,則按照如下的定義格式:
● 基礎語法:{key:正規表示式};
● 完整語法:{key:{"$regex":正則標記,"$options":選項}}。
對於options主要是設定正則的資訊查詢的標記:
● “i”:忽略字母大小寫,最常用;
● “m”:多行查詢;
● “x”:空白字串除了被轉義的或在字元類中以外的完全被忽略;
● “s”:匹配所有的字元(“.”),包含換行內容。
需要注意的是,如果是直接使用,那麼只能夠使用i和m,而“x”和“s”必須使用"$regex”
範例:查詢以“王”開頭的人員資訊
> db.emp.find({"name":/王/}).pretty();
{
"_id" : ObjectId("599108433268c8e84253be2d"),
"name" : "王八",
"sex" : "男",
"age" : 35,
"sal" : 8000,
"loc" : "北京"
}
範例:查詢姓名有字母a的人員資訊
> db.emp.find({"name":/a/i}).pretty();
{
"_id" : ObjectId("599129a00184ff511bf02b87"),
"name" : "劉A",
"sex" : "男",
"age" : 35,
"sal" : 8000,
"loc" : "北京",
"course" : [
"語文",
"數學",
"英語",
"音樂",
"政治"
]
}
{
"_id" : ObjectId("599148bd0184ff511bf02b91"),
"name" : "林A",
"sex" : "男",
"age" : 22,
"sal" : 8000,
"loc" : "北京",
"course" : [
"語文",
"數學",
"英語",
"音樂",
"政治"
],
"parents" : [
{
"name" : "林A父親",
"age" : 50,
"job" : "農民"
},
{
"name" : "林A母親",
"age" : 49,
"job" : "工人"
}
]
}
如果要執行模糊查詢的操作,嚴格來講只需要編寫一個關鍵字就夠了。
> db.emp.find({"name":{"$regex":/a/i}}).pretty();
{
"_id" : ObjectId("599129a00184ff511bf02b87"),
"name" : "劉A",
"sex" : "男",
"age" : 35,
"sal" : 8000,
"loc" : "北京",
"course" : [
"語文",
"數學",
"英語",
"音樂",
"政治"
]
}
{
"_id" : ObjectId("599148bd0184ff511bf02b91"),
"name" : "林A",
"sex" : "男",
"age" : 22,
"sal" : 8000,
"loc" : "北京",
"course" : [
"語文",
"數學",
"英語",
"音樂",
"政治"
],
"parents" : [
{
"name" : "林A父親",
"age" : 50,
"job" : "農民"
},
{
"name" : "林A母親",
"age" : 49,
"job" : "工人"
}
]
}
正則操作之中除了可以查詢出單個欄位的內容之外,也可以進行陣列資料的查詢。
範例:查詢陣列資料
> db.emp.find({"course":/語/i}).pretty();
{
"_id" : ObjectId("599129a00184ff511bf02b87"),
"name" : "劉A",
"sex" : "男",
"age" : 35,
"sal" : 8000,
"loc" : "北京",
"course" : [
"語文",
"數學",
"英語",
"音樂",
"政治"
]
}
MongoDB中的正則符號和之前Java正則是由一些小小差別,不建議使用以前的一些標記,正則就將其應用在模糊資料的查詢上。
如果要想實現正規表示式,則按照如下的定義格式:
● 基礎語法:{key:正規表示式};
● 完整語法:{key:{"$regex":正則標記,"$options":選項}}。
對於options主要是設定正則的資訊查詢的標記:
● “i”:忽略字母大小寫,最常用;
● “m”:多行查詢;
● “x”:空白字串除了被轉義的或在字元類中以外的完全被忽略;
● “s”:匹配所有的字元(“.”),包含換行內容。
需要注意的是,如果是直接使用,那麼只能夠使用i和m,而“x”和“s”必須使用"$regex”
範例:查詢以“王”開頭的人員資訊
> db.emp.find({"name":/王/}).pretty();
{
"_id" : ObjectId("599108433268c8e84253be2d"),
"name" : "王八",
"sex" : "男",
"age" : 35,
"sal" : 8000,
"loc" : "北京"
}
範例:查詢姓名有字母a的人員資訊
> db.emp.find({"name":/a/i}).pretty();
{
"_id" : ObjectId("599129a00184ff511bf02b87"),
"name" : "劉A",
"sex" : "男",
"age" : 35,
"sal" : 8000,
"loc" : "北京",
"course" : [
"語文",
"數學",
"英語",
"音樂",
"政治"
]
}
{
"_id" : ObjectId("599148bd0184ff511bf02b91"),
"name" : "林A",
"sex" : "男",
"age" : 22,
"sal" : 8000,
"loc" : "北京",
"course" : [
"語文",
"數學",
"英語",
"音樂",
"政治"
],
"parents" : [
{
"name" : "林A父親",
"age" : 50,
"job" : "農民"
},
{
"name" : "林A母親",
"age" : 49,
"job" : "工人"
}
]
}
如果要執行模糊查詢的操作,嚴格來講只需要編寫一個關鍵字就夠了。
> db.emp.find({"name":{"$regex":/a/i}}).pretty();
{
"_id" : ObjectId("599129a00184ff511bf02b87"),
"name" : "劉A",
"sex" : "男",
"age" : 35,
"sal" : 8000,
"loc" : "北京",
"course" : [
"語文",
"數學",
"英語",
"音樂",
"政治"
]
}
{
"_id" : ObjectId("599148bd0184ff511bf02b91"),
"name" : "林A",
"sex" : "男",
"age" : 22,
"sal" : 8000,
"loc" : "北京",
"course" : [
"語文",
"數學",
"英語",
"音樂",
"政治"
],
"parents" : [
{
"name" : "林A父親",
"age" : 50,
"job" : "農民"
},
{
"name" : "林A母親",
"age" : 49,
"job" : "工人"
}
]
}
正則操作之中除了可以查詢出單個欄位的內容之外,也可以進行陣列資料的查詢。
範例:查詢陣列資料
> db.emp.find({"course":/語/i}).pretty();
{
"_id" : ObjectId("599129a00184ff511bf02b87"),
"name" : "劉A",
"sex" : "男",
"age" : 35,
"sal" : 8000,
"loc" : "北京",
"course" : [
"語文",
"數學",
"英語",
"音樂",
"政治"
]
}
MongoDB中的正則符號和之前Java正則是由一些小小差別,不建議使用以前的一些標記,正則就將其應用在模糊資料的查詢上。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28536251/viewspace-2144092/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- PostgreSQL Like查詢與正規表示式SQL
- UltraEdit利用正規表示式查詢(轉)
- 正規表示式查詢相似單詞的方法
- MongoDB之資料查詢操作MongoDB
- MongoDB之資料查詢(資料排序)MongoDB排序
- eclipse使用技巧---使用正規表示式查詢替換Eclipse
- MongoDB正規表示式在索引中的使用MongoDB索引
- python之正規表示式Python
- java正規表示式之 groupJava
- 正規表示式之字元組字元
- MongoDB之資料查詢(陣列)MongoDB陣列
- 查詢不存在指定內容的字串正規表示式字串
- MongoDB正規表示式匹配使用方法舉例MongoDB
- 正規表示式詳細學習資料
- 正規表示式
- JS之正規表示式詳解JS
- 前端基礎之正規表示式前端
- 深入淺出之正規表示式
- MongoDB之資料查詢(巢狀集合)MongoDB巢狀
- 如何查詢日誌檔案中的所有ip,正規表示式
- js中使用正規表示式查詢字母和數字的方法JS
- 正規表示式查詢具有指定屬性值的html標籤HTML
- VS.net 中,使用正規表示式進行查詢、替換
- php之正規表示式函式總結PHP函式
- 【正規表示式】常用的正規表示式(數字,漢字,字串,金額等的正規表示式)字串
- 正規表示式匹配window資料夾路徑
- Python 之 RE(正規表示式)常用Python
- 《JavaScript 闖關記》之正規表示式JavaScript
- 正規表示式之(exp),(?:exp),(?=exp) 理解
- 開心檔之MySQL 正規表示式MySql
- 正規表示式之python實現Python
- 深入淺出之正規表示式(二)
- 深入淺出之正規表示式(一)
- Python基礎之正規表示式Python
- 【JavaScript】正規表示式JavaScript
- php –正規表示式PHP
- 正規表示式 教程
- 正規表示式 split()