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

Regex MongoDB tìm chính xác tên "John" phân biệt chữ hoa thường

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 /i thường không dùng index (trừ collation)
  • Thay thế: Text search index ($text) cho full-text search