Musisz zawinąć elementy w tablicy za pomocą RegExp
obiekt tj.
regex = [new RegExp("sai", "i"), new RegExp("test", "i"),...]
Możesz użyć map()
metoda mapowania elementów w tablicy z opakowaniami RegExp do nowej tablicy, której można następnie użyć w zapytaniu regex z $in
:
var x = ["sai","test","jacob","justin"],
regex = x.map(function (e) { return new RegExp(e, "i"); });
db.users.find({"profile.firstName": { "$in": regex } });
Korzystanie z $in
może być dość wydajny w przypadku małych tablic, ale nie tak dobrze w przypadku dużych list, ponieważ będzie przeskakiwać w indeksie, aby znaleźć pasujące dokumenty, lub przechodzić przez całą kolekcję, jeśli nie ma indeksu do użycia.
Poza tym używając $in z wyrażeniem regularnym , możesz użyć wzorca wyrażeń regularnych rozdzielonych pionową kreską z listą słów kluczowych w następujący sposób:
var x = ["sai","test","jacob","justin"],
regex = x.join("|");
db.users.find({
"profile.firstName": {
"$regex": regex,
"$options": "i"
}
}).count;