javascript – mongoose / mongodb查询多种排序

前端之家收集整理的这篇文章主要介绍了javascript – mongoose / mongodb查询多种排序前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我是新来的 mongodb.我设法得到一个基本的想法,一个简单的排序只有一个参数.如果有两个以上的排序参数怎么办?例如,在由具有totalCuttingTime属性和收藏的属性的木工项目组成的数据库中.

以下是一个正确的mongoose / mongodb函数,可以根据最高的最喜爱数据找到最少的总计时间和顺序的项目列表.

var ProjectModel = mongoose.model(‘Project’,schema);

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

    var result = leastCutTimeResult.find().sort({favoriteCount: -1}).select({_id: 1}).limit(number).exec(
            function(err,projects)
            }
        ); 

    return result;
}

解决方法

您需要将两个排序项放在一个对象中:
exports.getMinCuttingTime = function(number,callback){ 
    ProjectModel.find()
        .sort({totalCuttingTime: 1,favoriteCount: -1})
        .select({_id: 1})
        .limit(number)
        .exec(
            function(err,projects)
            }
        );
};

值得注意的是,Node.js所基于的ECMA-262标准没有指定对象的属性顺序被维护,并且它只是匹配插入顺序的实际标准.为了消除任何疑问,可以使用数组:

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

猜你在找的JavaScript相关文章