您好,登錄后才能下訂單哦!
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正則是由一些小小差別,不建議使用以前的一些標記,正則就將其應用在模糊數據的查詢上。
看完上述內容,你們掌握MongoDB中怎么使用正則表達式的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。