Du skal pakke elementerne i arrayet med RegExp
objekt, dvs.
regex =[new RegExp("sai", "i"), new RegExp("test", "i"),...]
Du kan bruge $in
:
var x = ["sai","test","jacob","justin"],
regex = x.map(function (e) { return new RegExp(e, "i"); });
db.users.find({"profile.firstName": { "$in": regex } });
Brug af $in
kan være ret effektivt med små arrays, men ikke så godt med store lister, da det vil springe rundt i indekset for at finde de matchende dokumenter, eller gå gennem hele samlingen, hvis der ikke er et indeks at bruge.
Udover brug af $in med det regulære udtryk , kan du bruge et rørsepareret regex-mønster med søgeordslisten som denne:
var x = ["sai","test","jacob","justin"],
regex = x.join("|");
db.users.find({
"profile.firstName": {
"$regex": regex,
"$options": "i"
}
}).count;