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

Tìm chuỗi chứa ký tự đặc biệt trong MongoDB

Để tìm chuỗi chứa ký tự đặc biệt (như $, ., *...), cần escape ký tự đó bằng \ trong regex.

Ví dụ: Collection searchDocumentWithSpecialCharactersDemo có trường UserId chứa ký tự $:

> db.searchDocumentWithSpecialCharactersDemo.insertOne({"UserId":"Smith$John123","UserFirstName":"John","UserLastName":"Smith"});
> db.searchDocumentWithSpecialCharactersDemo.insertOne({"UserId":"Taylor$Carol983","UserFirstName":"Carol","UserLastName":"Taylor"});
> db.searchDocumentWithSpecialCharactersDemo.insertOne({"UserId":"Doe$John999","UserFirstName":"John","UserLastName":"Doe"});
> db.searchDocumentWithSpecialCharactersDemo.insertOne({"UserId":"Miller$David555","UserFirstName":"David","UserLastName":"Miller"});

Xem dữ liệu:

> db.searchDocumentWithSpecialCharactersDemo.find().pretty();

Tìm chuỗi "John" đi kèm ký tự $ (escape bằng \):

> db.searchDocumentWithSpecialCharactersDemo.find({ 
    UserId: /.*\$John.*/i 
}).pretty();

Kết quả:

{ "_id" : ObjectId(...), "UserId" : "Smith$John123", "UserFirstName" : "John", "UserLastName" : "Smith" }
{ "_id" : ObjectId(...), "UserId" : "Doe$John999", "UserFirstName" : "John", "UserLastName" : "Doe" }

Giải thích:

  • /.*\$John.*/i: Regex không phân biệt chữ hoa/thường (i), tìm chuỗi chứa $John.
  • \$: Escape ký tự $ (nghĩa đặc biệt trong regex là "kết thúc chuỗi").

Lưu ý: Các ký tự đặc biệt khác cũng cần escape: \\, \., \*, \+, \?, \^, \$, \{, \}, \[, \], \(, \), \|.