Я создаю новое поле во время агрегации, чтобы отсортировать результаты по релевантности. К сожалению, метод $ sort просто замедляет выполнение моего запроса. Можете ли вы объяснить мне, как сделать это быстрее?
Вот мой код:
MyClass.aggregate([
{"$match": query}
,{
"$project" : Object.assign({
//
// Build relevancy score
//
"relevancyScore": {blablabla...}
}, otherFields)
}
,{"$sort":{"relevancyScore":-1}} // This line slow down the request
,{"$skip": currentPage * pageSize}
,{"$limit": pageSize}
])
.exec(function (err, res) {
if (err) return console.log("error", err);
resolve(res);
});
Если I $ сортировать по '_id', это действительно быстро, потому что поле _id проиндексировано. К сожалению, мое поле релевантностиScore создано в полете ...
Спасибо! : D