MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

mongodb-Abfrage, um jedes Element im Doc-Array mit einer Bedingung abzugleichen

Ich glaube nicht, dass es noch eine Möglichkeit gibt, dies zu tun, abgesehen davon, dass Sie Ihre Dokumente manuell durchlaufen und jeden Wert im Array überprüfen. Das wird ziemlich langsam sein, weil es JavaScript für jedes Dokument ausführen muss und keinen Index über col.values nutzen kann .

Sogar ein $wo Die JavaScript-Ausdrucksabfrage scheint hier nicht zu funktionieren, weil möglicherweise die Abfrage einen Rückruf enthält und zu komplex ist:

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

Bearbeiten: Für einige Abfragen, einschließlich dieser, ist das JavaScript $wo expression benötigt eine return-Anweisung, also funktioniert das gut:

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