Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MongoDB

การใช้ $regex ใน MongoDB สำหรับค้นหาข้อความ

ใช้ตัวดำเนินการ $regex เพื่อค้นหาข้อมูลด้วยนิพจน์ปกติ (Regular Expression) ไวยากรณ์:

db.yourCollectionName.find({yourFieldName: { $regex: yourValue }});

สร้างคอลเลกชันตัวอย่าง (ทดสอบ case sensitivity):

> db.regularExpressionDemo.insertOne({"UserName":"John"});
{ "acknowledged" : true, "insertedId" : ObjectId("5cdffc25bf3115999ed51210") }
> db.regularExpressionDemo.insertOne({"UserName":"JOHN"});
{ "acknowledged" : true, "insertedId" : ObjectId("5cdffc2ebf3115999ed51211") }
> db.regularExpressionDemo.insertOne({"UserName":"john"});
{ "acknowledged" : true, "insertedId" : ObjectId("5cdffc35bf3115999ed51212") }
> db.regularExpressionDemo.insertOne({"UserName":"JoHn"});
{ "acknowledged" : true, "insertedId" : ObjectId("5cdffc3ebf3115999ed51213") }

แสดงเอกสารทั้งหมด:

> db.regularExpressionDemo.find();

คิวรี่ค้นหา UserName = "JOHN" แบบ case-sensitive (ค่าเริ่มต้น):

> db.regularExpressionDemo.find({'UserName': { $regex: 'JOHN' }});

คิวรี่ค้นหา "JOHN" แบบ ไม่สนใจตัวพิมพ์เล็ก/ใหญ่ (ใช้ $options: 'i'):

> db.regularExpressionDemo.find({'UserName': { $regex: 'JOHN', $options: 'i' }});

ตัวเลือก $options ที่นิยม:

  • i - Case insensitive
  • m - Multiline (^ และ $ จับคู่ต้น/ท้ายบรรทัด)
  • s - Dot matches newline (.) จับคู่ newline ด้วย)
  • x - Extended (เว้นวรรคและคอมเมนต์ใน pattern)

รูปแบบสั้น: {field: /pattern/options} เช่น {UserName: /JOHN/i}