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

Cách truy vấn mảng chuỗi khớp biểu thức chính quy trong MongoDB?

Để truy vấn mảng chuỗi (Array[String]) khớp với biểu thức chính quy (Regular Expression), MongoDB cho phép sử dụng regex trực tiếp trong điều kiện truy vấn.

Cú pháp

db.tênCollection.find( { tênTrường: /mẫuRegex/ } ).pretty();

Ví dụ minh họa

Tạo collection với dữ liệu mẫu:

> db.queryArrayDemo.insertOne({"StudentFullName":["Carol Taylor","Caroline Williams","Claire Brown"]});
{ "acknowledged" : true, "insertedId" : ObjectId("5ca2774c6304881c5ce84ba0") }
> db.queryArrayDemo.insertOne({"StudentFullName":["John Smith","Jace Doe","Jabin Brown"]});
{ "acknowledged" : true, "insertedId" : ObjectId("5ca277b36304881c5ce84ba1") }

Hiển thị tất cả document:

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

Kết quả:

{ "_id" : ObjectId("5ca2774c6304881c5ce84ba0"), "StudentFullName" : [ 
    "Carol Taylor", "Caroline Williams", "Claire Brown" ] }
{ "_id" : ObjectId("5ca277b36304881c5ce84ba1"), "StudentFullName" : [ 
    "John Smith", "Jace Doe", "Jabin Brown" ] }

Truy vấn với Regex

Tìm document mà mảng StudentFullName chứa bất kỳ chuỗi nào bắt đầu bằng chữ "J":

> db.queryArrayDemo.find( { StudentFullName : /J./ } ).pretty();

Kết quả:

{ "_id" : ObjectId("5ca277b36304881c5ce84ba1"), "StudentFullName" : [ 
    "John Smith", "Jace Doe", "Jabin Brown" ] }

Giải thích: MongoDB tự động áp dụng regex cho từng element trong mảng. Document sẽ được trả về nếu ít nhất một element trong mảng khớp với mẫu regex. Mẫu /J./ khớp với bất kỳ chuỗi nào có ký tự đầu tiên là 'J' (không phân biệt chữ hoa/thường nếu thêm flag i).