การค้นหาข้อความแบบ case-sensitive ใน MongoDB ใช้ regular expression literal /pattern/ โดยไม่ใส่ flag i จะจับเฉพาะตัวพิมพ์ใหญ่-เล็กที่ตรงกัน
สร้างคอลเลกชันและข้อมูลตัวอย่าง (มี John และ john)
> db.demo221.insertOne({"Details":{"StudentName":"Chris","StudentAge":21}});
{ "acknowledged" : true, "insertedId" : ObjectId("5e3ee15d03d395bdc213472b") }
> db.demo221.insertOne({"Details":{"StudentName":"John","StudentAge":20}});
{ "acknowledged" : true, "insertedId" : ObjectId("5e3ee16503d395bdc213472c") }
> db.demo221.insertOne({"Details":{"StudentName":"Bob","StudentAge":22}});
{ "acknowledged" : true, "insertedId" : ObjectId("5e3ee16b03d395bdc213472d") }
> db.demo221.insertOne({"Details":{"StudentName":"john","StudentAge":24}});
{ "acknowledged" : true, "insertedId" : ObjectId("5e3ee17303d395bdc213472e") }
แสดงข้อมูลทั้งหมด
> db.demo221.find();
ผลลัพธ์: Chris, John, Bob, john (4 เอกสาร)
Query Regex Case-Sensitive: หา "John" เท่านั้น
> db.demo221.find({"Details.StudentName": /John/});
ผลลัพธ์
{ "_id" : ObjectId("5e3ee16503d395bdc213472c"), "Details" : { "StudentName" : "John", "StudentAge" : 20 } }
จับเฉพาะ "John" (J พิมพ์ใหญ่) ไม่จับ "john" (พิมพ์เล็กทั้งคำ)
Regex Syntax ใน MongoDB
| Pattern | ความหมาย | Case Sensitive |
|---|---|---|
/John/ | มี substring "John" | Yes |
/John/i | มี substring "John" (case-insensitive) | No |
/^John$/ | เท่ากับ "John" ทั้งคำ | Yes |
/^John$/i | เท่ากับ "John" ทั้งคำ (case-insensitive) | No |
/^Jo/ | ขึ้นต้นด้วย "Jo" | Yes |
/hn$/ | ลงท้ายด้วย "hn" | Yes |