Проверьте, соответствует ли каждый элемент в массиве условию
У меня есть коллекция документов:
date: Date
users: [
{ user: 1, group: 1 }
{ user: 5, group: 2 }
]
date: Date
users: [
{ user: 1, group: 1 }
{ user: 3, group: 2 }
]
Я хотел бы запросить эту коллекцию, чтобы найти все документы, в которых каждый идентификатор пользователя в моем массиве пользователей находится в другом массиве [1, 5, 7]. В этом примере соответствует только первый документ.
Лучшее решение, которое я смог найти, это сделать:
$where: function() {
var ids = [1, 5, 7];
return this.users.every(function(u) {
return ids.indexOf(u.user) !== -1;
});
}
К сожалению, это, кажется, ухудшает производительность, заявлено в$, где документы:
$ where оценивает JavaScript и не может использовать индексы.
Как я могу улучшить этот запрос?