我是新来的
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]])