sql >> Base de Datos >  >> NoSQL >> MongoDB

Mongoose encuentra todos los documentos donde array.length es mayor que 0 y ordena los datos

Suponiendo que su modelo se llame Employee :

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

})

Como $exists pide el 0 índice de una matriz, lo que significa que tiene algo en ella.

Lo mismo se aplica a un número máximo:

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

})

Entonces eso necesita tener al menos 10 entradas en la matriz para que coincida.

Realmente, debería registrar la longitud de la matriz y actualizar con $inc cada vez que se añade algo. Entonces puedes hacer:

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

})

En la propiedad "departmentsLength" que almacena. Esa propiedad se puede indexar, lo que la hace mucho más eficiente.