ใช้ตัวดำเนินการ $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 insensitivem- Multiline (^ และ $ จับคู่ต้น/ท้ายบรรทัด)s- Dot matches newline (.) จับคู่ newline ด้วย)x- Extended (เว้นวรรคและคอมเมนต์ใน pattern)
รูปแบบสั้น: {field: /pattern/options} เช่น {UserName: /JOHN/i}