Найти первые n документов, удовлетворяющих условию
В БД имеются документы подобного вида:
Как можно с помощью .findMany() найти, допустим, 2 документа, где произведение .techInfo.views и .techInfo.likes самое большое.
Я бы мог получить все документы и с помощью цикла пройтись по ним, но тогда каждая подобная операция была бы достаточно затратна.
Ответы (1 шт):
Автор решения: Дмытрык
→ Ссылка
db.test.aggregate([
{ $project: { total: { $multiply: ['$views', '$likes'] } } },
{ $sort: { total: -1 } },
{ $limit: 2 }
])
Этот запрос выдаст id-шники.
По идее, с версии 4.2 вместо $project можно использовать $unset - тогда выдаст целые документы. Но у меня версия Монги ниже, поэтому проверить не могу
