MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

не може да използва regex в $in оператор в mongodb

Трябва да обвиете елементите в масива с RegExp обект, т.е.

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

Можете да използвате map() метод за съпоставяне на елементите в масива с обвивките на RegExp към нов масив, който след това можете да използвате в заявката за regex с $in :

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

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

Използване на $in може да бъде доста ефективен с малки масиви, но не толкова добре с огромни списъци, тъй като ще прескача в индекса, за да намери съответстващите документи, или ще премине през цялата колекция, ако няма индекс за използване.

Освен използвайки $in с регулярния израз , можете да използвате модел на регулярен израз, разделен с вертикална черта, със списъка с ключови думи като този:

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 4.0 с ClusterControl

  2. Вмъкнете json файл в mongodb

  3. Как да използвам Map/Reduce в MongoDB?

  4. как да конвертирате низ в числови стойности в mongodb

  5. Как да филтрирате масив в поддокумент с MongoDB