我对mongodb很新。我设法只得到一个基于1参数的简单排序的基本概念。如果有超过2个排序参数怎么办?例如,在由具有totalCuttingTime
和favorited
属性的木工项目组成的数据库中。
以下是一个正确的mongoose / mongodb函数,用于查找具有least
totalCuttingTime并按照highest
favoriteCounts到最低的顺序排列的项目列表。
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) {
callback(null, projects)
}
);
return result;
}
答案 0 :(得分:49)
您需要将两个sort
字词放入一个对象中:
exports.getMinCuttingTime = function(number, callback){
ProjectModel.find()
.sort({totalCuttingTime: 1, favoriteCount: -1})
.select({_id: 1})
.limit(number)
.exec(
function(err, projects) {
callback(null, projects)
}
);
};
值得注意的是,Node.js所基于的ECMA-262标准没有规定维护对象的属性顺序,并且它只是匹配插入顺序的事实上的标准。为了消除任何疑问,您可以改为使用数组:
.sort([['totalCuttingTime', 1], ['favoriteCount', -1]])