sql >> Database >  >> NoSQL >> MongoDB

mongodb-query om elk element in doc-array te matchen met een voorwaarde

Ik denk niet dat er een manier is om dit nog te doen, behalve het handmatig doorlopen van je documenten en het controleren van elke waarde in de array. Dat gaat behoorlijk traag zijn omdat het JavaScript op elk document moet uitvoeren en geen gebruik kan maken van een index over col.values .

Zelfs een $waar JavaScript-expressiequery lijkt hier niet te werken omdat, mogelijk omdat de query een callback bevat en te complex is:

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

Bewerken: Voor sommige zoekopdrachten, waaronder deze, is de JavaScript $waar expressie heeft een return-statement nodig, dus dit werkt prima:

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


  1. Vind documenten waarvan het arrayveld ten minste n elementen van een bepaalde array bevat

  2. Mongo Json Schema Validator AnyOf werkt niet

  3. Hoe array in Mongodb-document te filteren met Spring

  4. Basisprincipes van MongoDB-ketenreplicatie