Du måste slå in elementen i arrayen med RegExp
objekt, dvs.
regex =[nytt RegExp("sai", "i"), nytt RegExp("test", "i"),...]
Du kan använda $in
:
var x = ["sai","test","jacob","justin"],
regex = x.map(function (e) { return new RegExp(e, "i"); });
db.users.find({"profile.firstName": { "$in": regex } });
Använder $in
kan vara ganska effektivt med små arrayer men inte så bra med enorma listor eftersom det kommer att hoppa runt i indexet för att hitta matchande dokument, eller gå igenom hela samlingen om det inte finns ett index att använda.
Förutom använda $in med det reguljära uttrycket , kan du använda ett röravgränsat regexmönster med sökordslistan så här:
var x = ["sai","test","jacob","justin"],
regex = x.join("|");
db.users.find({
"profile.firstName": {
"$regex": regex,
"$options": "i"
}
}).count;