sql >> Database >  >> NoSQL >> MongoDB

Mongoose vind alle documenten waar array.length groter is dan 0 &sorteer de gegevens

Ervan uitgaande dat uw model Employee wordt genoemd :

Employee.find({ "departments.0": { "$exists": true } },function(err,docs) {

})

Als $exists vraagt ​​om de 0 index van een array, wat betekent dat er iets in zit.

Hetzelfde geldt voor een maximum aantal:

Employee.find({ "departments.9": { "$exists": true } },function(err,docs) {

})

Dus dat moet minstens 10 items in de array hebben om overeen te komen.

Eigenlijk moet je de lengte van de array noteren en bijwerken met $inc elke keer wordt er iets toegevoegd. Dan kun je het volgende doen:

Employee.find({ "departmentsLength": { "$gt": 0 } },function(err,docs) {

})

Op het terrein "departmentsLength" sla je op. Die eigenschap kan worden geïndexeerd, wat het veel efficiënter maakt.



  1. Trage paginering over tonnen records in mongodb

  2. Verschil tussen Redis AOF en Tarantool WAL log

  3. Mongodb voegt document in zonder _id-veld

  4. mongodb mapreduce scope - ReferenceError