Verifique si cada elemento de la matriz coincide con la condición
Tengo una colección de documentos:
date: Date
users: [
{ user: 1, group: 1 }
{ user: 5, group: 2 }
]
date: Date
users: [
{ user: 1, group: 1 }
{ user: 3, group: 2 }
]
Me gustaría consultar en contra de esta colección para encontrar todos los documentos donde cada identificación de usuario en mi conjunto de usuarios está en otro conjunto, [1, 5, 7]. En este ejemplo, solo coincide el primer documento.
La mejor solución que he podido encontrar es hacer:
$where: function() {
var ids = [1, 5, 7];
return this.users.every(function(u) {
return ids.indexOf(u.user) !== -1;
});
}
Lamentablemente, esto parece perjudicar el rendimiento se afirma en el$ donde docs:
$ where evalúa JavaScript y no puede aprovechar los índices.
¿Cómo puedo mejorar esta consulta?