MongoDB regex
การแสดงออกปกติจะใช้ในการอธิบายการใช้งานของสายเดียวให้สอดคล้องกับชุดของประโยคสตริงกฎการแข่งขัน
หลายภาษาโปรแกรมสนับสนุนการใช้การแสดงออกปกติสำหรับการดำเนินงานสตริง
MongoDB ใช้ประกอบ $ regex การตั้งค่าการจับคู่สายแสดงออกปกติ
MongoDB ใช้ PCRE (Perl เข้ากันได้นิพจน์ปกติ) เป็นภาษาที่แสดงออกปกติ
ซึ่งแตกต่างจากการค้นหาแบบเต็มเราจะใช้การแสดงออกปกติไม่จำเป็นต้องทำกำหนดค่าใด ๆ
พิจารณาเอกสารชุดโครงสร้างต่อไปนี้โพสต์เอกสารที่มีเนื้อหาของบทความและฉลาก:
{ "post_text": "enjoy the mongodb articles on tutorialspoint", "tags": [ "mongodb", "tutorialspoint" ] }
ใช้นิพจน์ปกติ
คำสั่งดังต่อไปนี้ใช้นิพจน์ปกติจะพบบทความประกอบด้วยสตริง w3cschool.cc:
>db.posts.find({post_text:{$regex:"w3cschool.cc"}})
แบบสอบถามดังกล่าวยังสามารถเขียนเป็น:
>db.posts.find({post_text:/w3cschool.cc/})
กรณีตายแสดงออกปกติ
หากคุณต้องการที่จะดึงกรณีตายเราสามารถตั้งค่าตัวเลือกเป็น $ $ i
คำสั่งดังต่อไปนี้จะได้พบกับกรณีตายสตริง w3cschool.cc:
>db.posts.find({post_text:{$regex:"w3cschool.cc",$options:"$i"}})
คอลเลกชันจะกลับข้อมูลทั้งหมดที่มี w3cschool.cc สตริงที่ไม่กรณีที่สำคัญ:
{ "_id" : ObjectId("53493d37d852429c10000004"), "post_text" : "hey! this is my post on W3Cschool.cc", "tags" : [ "tutorialspoint" ] }
องค์ประกอบมากมายใช้นิพจน์ปกติ
นอกจากนี้เรายังสามารถใช้นิพจน์ปกติในเขตอาร์เรย์เพื่อค้นหาเนื้อหา นี้จะเป็นประโยชน์ในการก่อให้เกิดของฉลากถ้าคุณต้องการที่จะหาฉลากประกอบด้วยข้อมูล (กวดวิชาหรือบทเรียนหรือ tutorialpoint หรือ tutorialphp) กวดวิชาที่จุดเริ่มต้นคุณสามารถใช้รหัสต่อไปนี้:
>db.posts.find({tags:{$regex:"tutorial"}})
การเพิ่มประสิทธิภาพปกติแบบสอบถามนิพจน์
- ถ้าเขตข้อมูลดัชนีเอกสารของคุณตั้งแล้วใช้ของดัชนีเทียบกับการแสดงออกปกติที่ตรงกับการค้นหาข้อมูลทุกข้อสงสัยได้เร็วขึ้น
- หากการแสดงออกปกติคือการแสดงออกคำนำหน้าข้อมูลที่ตรงกันทั้งหมดจะเป็นสตริงคำนำหน้าระบุที่จะเริ่มต้น ตัวอย่างเช่นหากการแสดงออกปกติเป็น ^ จุ๊แบบสอบถามจุ๊จะมองไปที่จุดเริ่มต้นของสตริง
มีการใช้การแสดงออกปกติมีสองจุดที่จะต้องทราบก็คือ:
การแสดงออกปกติใช้ตัวแปร ให้แน่ใจว่าจะใช้การรวมกันของสตริง EVAL จะแปลงหลังจากที่ไม่สามารถส่งโดยตรงไปยังการแสดงออกสตริง มิฉะนั้นมีข้อผิดพลาดไม่ได้ แต่ผลที่ได้คือว่างเปล่า! ตัวอย่างมีดังนี้
var name=eval("/" + 变量值key +"/i");
ต่อไปนี้เป็นแบบสอบถามเลือนมีคำหลักชื่อไม่สำคัญ case:
title:eval("/"+title+"/i") // 等同于 title:{$regex:title,$Option:"$i"}