Je ne pense pas qu'il y ait encore un moyen de le faire, à part parcourir manuellement vos documents et vérifier chaque valeur du tableau. Cela va être assez lent car il doit exécuter JavaScript sur chaque document et ne peut tirer parti d'aucun index sur col.values
.
Même un $où
La requête d'expression JavaScript ne semble pas fonctionner ici car, peut-être parce que la requête contient un rappel et est trop complexe :
db.col.find("this.values.every(function(v) { return (v > 1 && v < 5) })")
Modifier : Pour certaines requêtes, y compris celle-ci, le JavaScript $où l'expression a besoin d'une instruction de retour, donc cela fonctionne bien :
db.col.find("return this.values.every(function(v) { return (v > 1 && v < 5) })")