sql >> Databasteknik >  >> NoSQL >> MongoDB

Mongoose hitta alla dokument där array.length är större än 0 och sortera data

Förutsatt att din modell heter Employee :

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

})

Som $exists frågar efter 0 index för en array vilket betyder att den har något i sig.

Detsamma gäller för ett maxantal:

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

})

Så det måste ha minst 10 poster i arrayen för att matcha.

Egentligen bör du registrera längden på arrayen och uppdatera med $inc varje gång något läggs till. Sedan kan du göra:

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

})

På fastigheten "departmentsLength" lagrar du. Den egenskapen kan indexeras, vilket gör den mycket effektivare.



  1. async nodejs frågar och bearbetar resultat

  2. hur räknar man inbäddad mongodb php?

  3. Hämta ObjectIdHex-värde från mgo-frågan

  4. Mongo 3.6 aggregeringssökning med flera villkor