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

Tìm record khớp LIKE trong MongoDB?

MongoDB không có toán tử LIKE như SQL, nhưng hỗ trợ Regular Expression (Regex) mạnh mẽ hơn để tìm kiếm mẫu chuỗi.

Tạo dữ liệu mẫu

> db.likeDemo.insertOne({"Name":"John",Age:32});
{ "acknowledged" : true, "insertedId" : ObjectId("5cb84984623186894665ae41") }
> db.likeDemo.insertOne({"Name":"Chris",Age:25});
{ "acknowledged" : true, "insertedId" : ObjectId("5cb84991623186894665ae42") }
> db.likeDemo.insertOne({"Name":"Carol",Age:22});
{ "acknowledged" : true, "insertedId" : ObjectId("5cb849a1623186894665ae43") }
> db.likeDemo.insertOne({"Name":"Johnny",Age:22});
{ "acknowledged" : true, "insertedId" : ObjectId("5cb849b2623186894665ae44") }
> db.likeDemo.insertOne({"Name":"James",Age:27});
{ "acknowledged" : true, "insertedId" : ObjectId("5cb849bb623186894665ae45") }

Hiển thị tất cả:

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

Tìm tên bắt đầu bằng "Jo" (tương đương LIKE 'Jo%')

> db.likeDemo.find({Name: /^Jo/i } ).pretty();

Kết quả:


So sánh LIKE SQL vs Regex MongoDB

SQL LIKEMongoDB RegexÝ nghĩa
LIKE 'Jo%'/^Jo/ hoặc /^Jo/iBắt đầu bằng "Jo"
LIKE '%hn'/hn$/ hoặc /hn$/iKết thúc bằng "hn"
LIKE '%oh%/oh/ hoặc /oh/iChứa "oh" ở bất kỳ vị trí
LIKE 'J_hn'/J.hn/J + 1 ký tự bất kỳ + hn

Flag i: Không phân biệt chữ hoa/thường (case-insensitive). Mặc định regex phân biệt hoa/thường.

Hiệu năng: Regex có anchor ^ (bắt đầu chuỗi) có thể tận dụng index. Regex không có anchor hoặc bắt đầu bằng wildcard .* sẽ quét toàn bộ collection (collection scan).