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

Mongoose find alle dokumenter, hvor array.length er større end 0 og sorter dataene

Forudsat at din model hedder Employee :

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

})

Som $exists beder om 0 indeks for en matrix, hvilket betyder, at den har noget i sig.

Det samme gælder for et maksimalt antal:

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

})

Så det skal have mindst 10 poster i arrayet for at matche.

Faktisk bør du registrere længden af ​​arrayet og opdatere med $inc hver gang der tilføjes noget. Så kan du gøre:

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

})

På ejendommen "afdelingerLængde" opbevarer du. Den egenskab kan indekseres, hvilket gør den meget mere effektiv.



  1. Får du en forbindelsesfejl, når du bruger redis-trib.rb til at oprette en klynge?

  2. Sådan kører du js-fil i mongo ved hjælp af springdata

  3. Redis :Hvordan kan jeg sortere min hash efter nøgler?

  4. Delvise indekser i mongodb / mongoose