Regex trong MongoDB mặc định phân biệt chữ hoa thường (case-sensitive). Dùng cú pháp /pattern/ để tìm khớp chính xác.
Dữ liệu mẫu (có cả "John" và "john")
> db.demo221.insertOne({"Details":{"StudentName":"Chris","StudentAge":21}});
> db.demo221.insertOne({"Details":{"StudentName":"John","StudentAge":20}});
> db.demo221.insertOne({"Details":{"StudentName":"Bob","StudentAge":22}});
> db.demo221.insertOne({"Details":{"StudentName":"john","StudentAge":24}});
Truy vấn regex case-sensitive
> db.demo221.find({"Details.StudentName": /John/});
Kết quả (chỉ "John", không phải "john")
{ "_id" : ObjectId("5e3ee16503d395bdc213472c"), "Details" : { "StudentName" : "John", "StudentAge" : 20 } }
Các tùy chọn regex:
/John/: Case-sensitive (mặc định)/John/i: Case-insensitive (khớp John, john, JOHN...)/^John$/: Khớp toàn chuỗi (anchor){$regex: "John", $options: "i"}: Cú pháp object (hữu ích khi pattern từ biến)
Hiệu suất:
- Regex prefix
/^John/có thể dùng index - Regex chứa
/John/hoặc suffix/John$/→ full scan - Case-insensitive
/ithường không dùng index (trừ collation) - Thay thế: Text search index (
$text) cho full-text search