Mongoose/mongodb запрос нескольких сортировок
Я очень новичок в mongodb. Мне удается получить базовое представление о простом сортировке, основанном только на 1 параметре. что, если имеется более двух параметров сортировки. например, в базе данных, состоящей из проектов деревообработки, имеющих атрибуты 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;
}
Ответы
Ответ 1
Вам нужно включить оба выражения 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)
}
);
};
Стоит отметить, что стандарт ECMA-262, на котором основан Node.js, не указывает, что порядок свойств объекта поддерживается, и он только стандарт де-факто, чтобы соответствовать порядку вставки. Чтобы устранить любые сомнения, вы можете использовать массив:
.sort([['totalCuttingTime', 1], ['favoriteCount', -1]])