MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

mongoose/mongodb requête tri multiple

Vous devez mettre les deux sort termes en un seul objet :

exports.getMinCuttingTime = function(number, callback){ 
    ProjectModel.find()
        .sort({totalCuttingTime: 1, favoriteCount: -1})
        .select({_id: 1})
        .limit(number)
        .exec(
            function(err, projects) {
                callback(null, projects)
            }
        );
};

Il convient de noter que la norme ECMA-262 sur laquelle Node.js est basé ne spécifie pas que l'ordre des propriétés d'un objet est maintenu, et ce n'est qu'une norme de facto pour correspondre à l'ordre d'insertion. Pour éliminer tout doute, vous pouvez utiliser un tableau à la place :

.sort([['totalCuttingTime', 1], ['favoriteCount', -1]])