MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

không thể sử dụng regex trong toán tử $ in trong mongodb

Bạn cần bao bọc các phần tử trong mảng bằng RegExp đối tượng tức là

regex =[new RegExp ("sai", "i"), mới RegExp ("test", "i"), ...]

Bạn có thể sử dụng mã <> map () phương pháp ánh xạ các phần tử trong mảng bằng trình bao bọc RegExp thành một mảng mới mà sau đó bạn có thể sử dụng trong truy vấn regex với $in :

var x = ["sai","test","jacob","justin"],
    regex = x.map(function (e) { return new RegExp(e, "i"); });

db.users.find({"profile.firstName": { "$in": regex } });

Sử dụng $ in có thể khá hiệu quả với các mảng nhỏ nhưng không tốt với các danh sách lớn vì nó sẽ bỏ qua trong chỉ mục để tìm các tài liệu phù hợp hoặc xem qua toàn bộ bộ sưu tập nếu không có chỉ mục để sử dụng.

Bên cạnh đó sử dụng $ in với biểu thức chính quy , bạn có thể sử dụng mẫu regex được phân tách bằng dấu sổ đứng với danh sách từ khóa như sau:

var x = ["sai","test","jacob","justin"],
    regex = x.join("|");

db.users.find({
    "profile.firstName": {
        "$regex": regex, 
        "$options": "i"
    } 
}).count;


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB thêm vào trường bộ sưu tập tham gia từ cơ sở một

  2. Cách sao chép một bộ sưu tập từ cơ sở dữ liệu này sang cơ sở dữ liệu khác trong MongoDB

  3. MongoError:cấu trúc liên kết bị phá hủy khi sử dụng với NextJs api

  4. MongoDB - Làm cách nào để trả lại tài liệu có <field_value> dưới dạng <field_key>?

  5. Truyền tệp từ Amazon S3 qua máy chủ NodeJS mà không để lộ URL S3?