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

Mongoose trova tutti i documenti in cui array.length è maggiore di 0 e ordina i dati

Presumendo che il tuo modello si chiami Employee :

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

})

Come $exists chiede il 0 indice di un array che significa che contiene qualcosa.

Lo stesso vale per un numero massimo:

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

})

Quindi deve avere almeno 10 voci nell'array da abbinare.

Comunque dovresti registrare la lunghezza dell'array e aggiornarlo con $inc ogni volta che viene aggiunto qualcosa. Allora puoi fare:

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

})

Nella proprietà "departmentsLength" che memorizzi. Tale proprietà può essere indicizzata, il che la rende molto più efficiente.