MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

mongodb per far corrispondere ogni elemento nell'array doc a una condizione

Non credo che ci sia ancora un modo per farlo, a parte l'iterazione manuale dei documenti e il controllo di ogni valore nell'array. Sarà piuttosto lento perché deve eseguire JavaScript su ogni documento e non può sfruttare alcun indice su col.values .

Anche un $dove La query dell'espressione JavaScript non sembra funzionare qui perché, probabilmente perché la query contiene un callback ed è troppo complessa:

db.col.find("this.values.every(function(v) { return (v > 1 && v < 5) })")

Modifica: Per alcune query, inclusa questa, JavaScript $dove l'espressione ha bisogno di un'istruzione return, quindi funziona bene:

db.col.find("return this.values.every(function(v) { return (v > 1 && v < 5) })")