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

คิวรี่ MongoDB สำหรับการค้นหาแบบไม่สนใจตัวพิมพ์เล็ก-ใหญ่ (Case Insensitive)

การค้นหาแบบ Case Insensitive ใน MongoDB

บทความนี้สาธิตวิธีการค้นหาข้อมูลใน MongoDB โดยไม่สนใจตัวพิมพ์เล็กหรือตัวพิมพ์ใหญ่ (Case Insensitive Search) โดยใช้ Regular Expression และออปเจอเตอร์ $or ร่วมกับ $in

ขั้นตอนที่ 1: สร้าง Collection และเพิ่มข้อมูลตัวอย่าง

สร้าง collection ชื่อ demo186 และเพิ่มเอกสาร 3 รายการ ที่มีฟิลด์ UserEmailId และ UserName โดยอีเมลมีตัวพิมพ์ผสมกัน

> db.demo186.insertOne({"UserEmailId":"JOHN@GMAIL.COM","UserName":"John"});
{ "acknowledged": true, "insertedId": ObjectId("5e399d769e4f06af55199808") }

> db.demo186.insertOne({"UserEmailId":"chris@gmail.com","UserName":"chris"});
{ "acknowledged": true, "insertedId": ObjectId("5e399d879e4f06af55199809") }

> db.demo186.insertOne({"UserEmailId":"DAVID@GMAIL.COM","UserName":"David"});
{ "acknowledged": true, "insertedId": ObjectId("5e399d979e4f06af5519980a") }

ขั้นตอนที่ 2: แสดงข้อมูลทั้งหมด

> db.demo186.find();

ผลลัพธ์:

{ "_id": ObjectId("5e399d769e4f06af55199808"), "UserEmailId": "JOHN@GMAIL.COM", "UserName": "John" }
{ "_id": ObjectId("5e399d879e4f06af55199809"), "UserEmailId": "chris@gmail.com", "UserName": "chris" }
{ "_id": ObjectId("5e399d979e4f06af5519980a"), "UserEmailId": "DAVID@GMAIL.COM", "UserName": "David" }

ขั้นตอนที่ 3: คิวรี่ค้นหาแบบ Case Insensitive

สร้างอาร์เรย์ของ Regular Expression พร้อมแฟล็ก i (case insensitive) แล้วใช้ $or ร่วมกับ $in เพื่อค้นหาในฟิลด์ UserEmailId หรือ UserName

> var userMailId = [ /john@gmail.com/i, /david@gmail.com/i ]
> db.demo186.find({
    '$or': [
        { 'UserEmailId': { '$in': userMailId } },
        { 'UserName': 'John' }
    ]
})

ผลลัพธ์ที่ได้

{ "_id": ObjectId("5e399d769e4f06af55199808"), "UserEmailId": "JOHN@GMAIL.COM", "UserName": "John" }
{ "_id": ObjectId("5e399d979e4f06af5519980a"), "UserEmailId": "DAVID@GMAIL.COM", "UserName": "David" }

สรุป: การใช้ Regular Expression พร้อมแฟล็ก i ร่วมกับ $in และ $or ช่วยให้สามารถค้นหาข้อมูลได้อย่างยืดหยุ่น โดยไม่ต้องกังวลเรื่องตัวพิมพ์เล็ก-ใหญ่