Трябва да обвиете елементите в масива с 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;