добавив сортировку внутри агрегированного оператора mongodb - PullRequest
0 голосов
/ 16 марта 2020

Я выполняю задание, и в вопросе уточняется: Перечислите пять актеров (актрис), которые получили наибольшее количество наград и номинаций. Верните их имена и новое поле под названием «распознавания»

. Пока мне удалось раскрутить поле актера и успешно создать поле распознавания, чтобы подсчитать общее количество побед и номинаций. Я пытаюсь добавить сортировку, чтобы отфильтровать 5 самых высоких итоговых показателей актера. Как бы я это сделал

Вот пример из базы данных

{
    "_id" : ObjectId("5e691e99fceb31c7d6cc327e"),
    "title" : "Toy Story",
    "year" : 1995,
    "rated" : "G",
    "runtime" : 81,
    "countries" : [
        "USA"
    ],
    "genres" : [
        "Animation",
        "Adventure",
        "Comedy"
    ],
    "director" : "John Lasseter",
    "writers" : [
        "John Lasseter",
        "Pete Docter",
        "Andrew Stanton",
        "Joe Ranft",
        "Joss Whedon",
        "Andrew Stanton",
        "Joel Cohen",
        "Alec Sokolow"
    ],
    "actors" : [
        "Tom Hanks",
        "Tim Allen",
        "Don Rickles",
        "Jim Varney"
    ],
    "plot" : "A cowboy doll is profoundly threatened and jealous when a new spaceman figure supplants him as top toy in a boy's room.",
    "poster" : "http://ia.media-imdb.com/images/M/MV5BMTgwMjI4MzU5N15BMl5BanBnXkFtZTcwMTMyNTk3OA@@._V1_SX300.jpg",
    "imdb" : {
        "id" : "tt0114709",
        "rating" : 8.3,
        "votes" : 574251
    },
    "tomato" : {
        "meter" : 100,
        "image" : "certified",
        "rating" : 9,
        "reviews" : 78,
        "fresh" : 78,
        "consensus" : "Entertaining as it is innovative, Toy Story reinvigorated animation while heralding the arrival of Pixar as a family-friendly force to be reckoned with.",
        "userMeter" : 92,
        "userRating" : 3.7,
        "userReviews" : 1104709
    },
    "metacritic" : 92,
    "awards" : {
        "wins" : 22,
        "nominations" : 17,
        "text" : "Nominated for 3 Oscars. Another 22 wins & 17 nominations."
    },
    "type" : "movie",
    "myRating" : false,
    "myRatings" : 94.66666666666667
}

Вот что я сделал до сих пор для запроса.

db.movies.aggregate([
  {
    $unwind: "$actors"
  },
  {
    $group: {
      _id: {
        actors: "$actors",
        wins: "$awards.wins",
        nominations: "$awards.nominations"
      },
      recognition: {
        $sum: {
          $add: [
            "$awards.wins",
            "$awards.nominations"
          ]
        }
      }
    }
  }
])

Я знаю, что мне нужно отсортировать по распознаванию, а затем ограничить до 5, но я не уверен, как. Любая помощь будет оценена

...