ใช้ Regular Expression กับ Flag i เพื่อ Query แบบไม่สนใจตัวพิมพ์เล็ก/ใหญ่ (Case-Insensitive)
ไวยากรณ์
db.yourCollectionName.find({"yourFieldName": /^yourValue$/i});
^ = เริ่มสตริง, $ = จบสตริง, i = Case-Insensitive
สร้างข้อมูลตัวอย่าง
> db.caseInsensitiveDemo.insertOne({"Name": "John"});
{ "acknowledged" : true, "insertedId" : ObjectId("5c6d7a67f2db199c1278e7ef") }
> db.caseInsensitiveDemo.insertOne({"Name": "JOHN"});
{ "acknowledged" : true, "insertedId" : ObjectId("5c6d7ad6f2db199c1278e7f0") }
แสดงเอกสารทั้งหมด
> db.caseInsensitiveDemo.find();
{ "_id" : ObjectId("5c6d7a67f2db199c1278e7ef"), "Name" : "John" }
{ "_id" : ObjectId("5c6d7ad6f2db199c1278e7f0"), "Name" : "JOHN" }
Query Case-Insensitive: ค้นหา "john" (เล็กทั้งหมด)
> db.caseInsensitiveDemo.find({"Name": /^john$/i});
ผลลัพธ์: ได้ทั้ง "John" และ "JOHN"
{ "_id" : ObjectId("5c6d7a67f2db199c1278e7ef"), "Name" : "John" }
{ "_id" : ObjectId("5c6d7ad6f2db199c1278e7f0"), "Name" : "JOHN" }
Regex /^john$/i จับคู่ "john", "John", "JOHN", "JoHn" ทุกกรณี