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

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

Case Insensitive Search ด้วย $regex

ใช้ Operator $regex พร้อม Regular Expression เพื่อค้นหาแบบไม่สนใจตัวพิมพ์เล็ก/ใหญ่

รูปแบบที่ 1: ใช้ ^pattern$ แบบ Exact Match

db.yourCollectionName.find({ "yourFieldName" : { '$regex': '^yourValue$' } });

รูปแบบที่ 2: ใช้ Flag 'i' สำหรับ Case Insensitive

db.yourCollectionName.find({ "yourFieldName" : { '$regex': /^yourValue$/i } });

สร้างข้อมูลตัวอย่าง

> db.caseInsesitiveDemo.insertOne({"Name":"John"});
{ "acknowledged" : true, "insertedId" : ObjectId("5c8bd66293c80e3f23815e83") }
> db.caseInsesitiveDemo.insertOne({"Name":"Johnson"});
{ "acknowledged" : true, "insertedId" : ObjectId("5c8bd66693c80e3f23815e84") }
> db.caseInsesitiveDemo.insertOne({"Name":"Johny"});
{ "acknowledged" : true, "insertedId" : ObjectId("5c8bd66a93c80e3f23815e85") }

Query แบบไม่ระบุ ^ $ (Partial Match)

> db.caseInsesitiveDemo.find({ "Name" : { '$regex' : 'John' }});
{ "_id" : ObjectId("5c8bd66293c80e3f23815e83"), "Name" : "John" }
{ "_id" : ObjectId("5c8bd66693c80e3f23815e84"), "Name" : "Johnson" }
{ "_id" : ObjectId("5c8bd66a93c80e3f23815e85"), "Name" : "Johny" }

กรณีที่ 1: Exact Match ด้วย ^John$

> db.caseInsesitiveDemo.find({ "Name" : { '$regex': '^John$' }});
{ "_id" : ObjectId("5c8bd66293c80e3f23815e83"), "Name" : "John" }

กรณีที่ 2: Exact Match Case Insensitive ด้วย /^John$/i

> db.caseInsesitiveDemo.find({ "Name" : { '$regex': /^John$/i }});
{ "_id" : ObjectId("5c8bd66293c80e3f23815e83"), "Name" : "John" }

ทั้งสองวิธีให้ผลลัพธ์เดียวกัน คือ Document ที่ Name เท่ากับ "John" อย่างแน่นอน