การค้นหา domain name ใน URL field แบบ case-insensitive ใช้ regular expression ด้วย flag i (/pattern/i หรือ {$regex: pattern, $options: "i"})
สร้างคอลเลกชันและข้อมูลตัวอย่าง
> db.demo219.insertOne({"details":{"WebsiteURL":"www.EXAMPLE.com"}});
{ "acknowledged" : true, "insertedId" : ObjectId("5e3e667203d395bdc2134718") }
> db.demo219.insertOne({"details":{"WebsiteURL":"www.gmail.com"}});
{ "acknowledged" : true, "insertedId" : ObjectId("5e3e667803d395bdc2134719") }
> db.demo219.insertOne({"details":{"WebsiteURL":"www.example.com"}});
{ "acknowledged" : true, "insertedId" : ObjectId("5e3e667f03d395bdc213471a") }
แสดงข้อมูลทั้งหมด
> db.demo219.find();
ผลลัพธ์: EXAMPLE.com (uppercase), gmail.com, example.com (lowercase)
Query ค้นหา Domain "example" แบบ Case-Insensitive
> db.demo219.find({"details.WebsiteURL": /example/i});
ผลลัพธ์
{ "_id" : ObjectId("5e3e667203d395bdc2134718"), "details" : { "WebsiteURL" : "www.EXAMPLE.com" } }
{ "_id" : ObjectId("5e3e667f03d395bdc213471a"), "details" : { "WebsiteURL" : "www.example.com" } }
จับทั้ง "EXAMPLE.com" และ "example.com" เพราะ flag i (case-insensitive)
ไม่จับ "gmail.com"
Regex Pattern สำหรับ Domain Matching
| Pattern | จับได้ | ไม่จับ |
|---|---|---|
/example/i | example.com, EXAMPLE.COM, sub.example.com | examples.com, myexample.com |
/^example\./i | example.com, example.org | sub.example.com, myexample.com |
/example\.com$/i | example.com, www.example.com | example.org, example.com.br |
/^[^.]*\.example\./i | www.example.com, api.example.com | example.com, sub.www.example.com |