sql >> Databasteknik >  >> NoSQL >> MongoDB

mongodb-fråga för att matcha varje element i doc-arrayen till ett villkor

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) })")


  1. MongoDB-as-a-Service i Kanada

  2. Hur gör man en Mongo-aggregationsfråga i Spring Data?

  3. JavaScript - Konvertera 24-siffrigt hexadecimalt tal till decimaltal, lägg till 1 och konvertera sedan tillbaka?

  4. Mongodb - okänd operatör på toppnivå:$elemMatch