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

Xây dựng (escape) biểu thức chính quy trong MongoDB

Sử dụng find() với regex //i (flag i: không phân biệt hoa thường) để tìm chuỗi con. Các ký tự đặc biệt regex trong dữ liệu (như /, (, )) vẫn được khớp bình thường.

Tạo collection với Message chứa ký tự đặc biệt:

> db.demo696.insertOne({Message:"/Good/"});
{ "acknowledged" : true, "insertedId" : ObjectId("5ea6d664551299a9f98c9391") }
> db.demo696.insertOne({Message:"(good)"});
{ "acknowledged" : true, "insertedId" : ObjectId("5ea6d67a551299a9f98c9392") }
> db.demo696.insertOne({Message:"/Bye/"});
{ "acknowledged" : true, "insertedId" : ObjectId("5ea6d68b551299a9f98c9393") }
> db.demo696.insertOne({Message:"(GOOD)"});
{ "acknowledged" : true, "insertedId" : ObjectId("5ea6d693551299a9f98c9394") }

Hiển thị tất cả:

> db.demo696.find();

Tìm Message chứa "good" (không phân biệt hoa thường):

> db.demo696.find({Message:/good/i});

Kết quả (3 bản ghi chứa good/GOOD):

{ "_id" : ObjectId("5ea6d664551299a9f98c9391"), "Message" : "/Good/" }
{ "_id" : ObjectId("5ea6d67a551299a9f98c9392"), "Message" : "(good)" }
{ "_id" : ObjectId("5ea6d693551299a9f98c9394"), "Message" : "(GOOD)" }

Lưu ý: Regex /good/i khớp chuỗi con "good" bất kỳ vị trí nào. Ký tự '/' và '()' trong dữ liệu được coi là chữ thường, không ảnh hưởng regex.