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

Có thể dùng giá trị trường MongoDB làm pattern trong $regex không?

Có, sử dụng toán tử $indexOfCP trong aggregation để kiểm tra chuỗi con. Tạo collection:

> db.patterDemo.insertOne({
  "ClientName": "John", "ClientWebsiteName": "webbuziness.com/John/business"
});
{ "acknowledged": true, "insertedId": ObjectId("5cea40acef71edecf6a1f68d") }
> db.patterDemo.insertOne({
  "ClientName": "Carol", "ClientWebsiteName": "solvecoding.com/business"
});
{ "acknowledged": true, "insertedId": ObjectId("5cea40acef71edecf6a1f68e") }

Hiển thị document (ví dụ output rút gọn):

{
  "_id": ObjectId("5cea40acef71edecf6a1f68d"),
  "ClientName": "John", "ClientWebsiteName": "abcd.com"
}
{
  "_id": ObjectId("5cea40acef71edecf6a1f68e"),
  "ClientName": "Carol", "ClientWebsiteName": "pqrs.com"
}

Truy vấn aggregate dùng $indexOfCP để tìm document mà ClientWebsiteName chứa ClientName:

> db.patterDemo.aggregate([
  { "$match": {
    "$expr": {
      "$ne": [
        { "$indexOfCP": ["$ClientWebsiteName", "$ClientName"] },
        -1
      ]
    }
  }}
]);

Kết quả (chỉ document của John khớp):

{
  "_id": ObjectId("5cea40acef71edecf6a1f68d"),
  "ClientName": "John", "ClientWebsiteName": "abcd.com"
}