Найти первые 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 - тогда выдаст целые документы. Но у меня версия Монги ниже, поэтому проверить не могу

→ Ссылка