Задать вопрос
@rshruslan

Как в MongoDB сделать сортировку по формуле?

Есть задача
Есть в базе данных 10к айтемов, у которых есть цены 7 сервисов.
Нужно при выборе двух сервисов найти самые выгодные по формуле.
Но тут возникает вопрос - как лучше сделать без костылей?
Можно ли как-то запросом сделать или как лучше?
Пока мой вариант - получать все айтемы, перебирать, считать и возвращать самые выгодные 100
В бд не получится хранить поле с процентом (он считается по формуле), т.к тогда будет 49 полей таких, ибо 7 сервисов могут взаимодействовать друг с другом в обе стороны.
  • Вопрос задан
  • 110 просмотров
Подписаться 1 Простой 4 комментария
Пригласить эксперта
Ответы на вопрос 1
hzzzzl
@hzzzzl
посмотри addFields, можно сделать еще одно поле, где всё посчитать "по формуле", и потом уже типа sort: { newField: -1 }

https://docs.mongodb.com/manual/reference/operator...

db.scores.aggregate( [
   {
     $addFields: {
       totalHomework: { $sum: "$homework" } , // сумма массива
       totalQuiz: { $sum: "$quiz" }  // сумма массива
     }
   },
   {
     $addFields: { totalScore:
       { $add: [ "$totalHomework", "$totalQuiz", "$extraCredit" ] } } // два новых поля + одно старое
   }
] )


хотя это конечно расплывчатый ответ, но и из вопроса непонятно, как что считать, если average то наверняка можно и проще
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы