Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MongoDB

Truy vấn không phân biệt chữ hoa/thường (Case-insensitive) trong MongoDB

Để 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).