Để tìm kiếm chuỗi không phân biệt chữ hoa/thường, MongoDB hỗ trợ Regular Expression (Regex) với flag i. Cú pháp: { field: /pattern/i } hoặc { field: { $regex: "pattern", $options: "i" } }.
Dữ liệu mẫu
> db.demo314.insertOne({"Name":"Chris brown"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e50d742f8647eb59e562056") }
> db.demo314.insertOne({"Name":"David Miller"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e50d743f8647eb59e562057") }
> db.demo314.insertOne({"Name":"CHRIS BROWN"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e50d744f8647eb59e562058") }
> db.demo314.insertOne({"Name":"DAVID MILLER"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e50d747f8647eb59e562059") }
> db.demo314.insertOne({"Name":"chris brown"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e50d749f8647eb59e56205a") }
Xem dữ liệu
> db.demo314.find();
{ "_id" : ObjectId("5e50d742f8647eb59e562056"), "Name" : "Chris brown" }
{ "_id" : ObjectId("5e50d743f8647eb59e562057"), "Name" : "David Miller" }
{ "_id" : ObjectId("5e50d744f8647eb59e562058"), "Name" : "CHRIS BROWN" }
{ "_id" : ObjectId("5e50d747f8647eb59e562059"), "Name" : "DAVID MILLER" }
{ "_id" : ObjectId("5e50d749f8647eb59e56205a"), "Name" : "chris brown" }
Truy vấn case-insensitive: tìm "chris brown"
> db.demo314.find({"Name":/chris brown/i});
Kết quả
{ "_id" : ObjectId("5e50d742f8647eb59e562056"), "Name" : "Chris brown" }
{ "_id" : ObjectId("5e50d744f8647eb59e562058"), "Name" : "CHRIS BROWN" }
{ "_id" : ObjectId("5e50d749f8647eb59e56205a"), "Name" : "chris brown" }
Lưu ý hiệu năng: Regex không sử dụng index thông thường (trừ khi pattern là prefix như /^chris/i). Để tìm kiếm full-text hiệu quả, hãy tạo Text Index và dùng $text/$search (xem bài tiếp theo).