U moet de elementen in de array inpakken met de RegExp
object d.w.z.
regex =[new RegExp("sai", "i"), new RegExp("test", "i"),...]
U kunt de map()
methode om de elementen in de array met de RegExp-wrappers toe te wijzen aan een nieuwe array die u vervolgens in de regex-query kunt gebruiken met $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
gebruiken
kan redelijk efficiënt zijn met kleine arrays, maar niet zo goed met enorme lijsten, omdat het de index zal overslaan om de overeenkomende documenten te vinden, of door de hele collectie loopt als er geen index is om te gebruiken.
Naast de $in gebruiken met de reguliere expressie , kunt u een door sluistekens gescheiden regex-patroon gebruiken met de lijst met zoekwoorden als volgt:
var x = ["sai","test","jacob","justin"],
regex = x.join("|");
db.users.find({
"profile.firstName": {
"$regex": regex,
"$options": "i"
}
}).count;