Jag tror inte att det finns något sätt att göra detta än, förutom att manuellt iterera igenom dina dokument och kontrollera varje värde i arrayen. Det kommer att gå ganska långsamt eftersom det måste köra JavaScript på varje dokument och inte kan dra nytta av något index över col.values
.
Även en $where
JavaScript-uttrycksfråga verkar inte fungera här eftersom, möjligen för att frågan innehåller en återuppringning och är för komplex:
db.col.find("this.values.every(function(v) { return (v > 1 && v < 5) })")
Redigera: För vissa frågor, inklusive denna, JavaScript $where uttryck behöver en retursats, så det här fungerar bra:
db.col.find("return this.values.every(function(v) { return (v > 1 && v < 5) })")