У меня есть пост:
post: {
title: "Future devops",
avgrating: 5,
ratingOne: 4
ratingTwo: 4
ratingThree: 4
ratingFour: 5
ratingFive: 4
}
И комментарии к нему
commentsPost: [
{
name: "Dima",
ratingOne: 3,
ratingTwo: 2,
ratingThree: 2,
ratingFour: 5,
ratingFive: 2
},
{
name: "Dima",
ratingOne: 3,
ratingTwo: 2,
ratingThree: 2,
ratingFour: 5,
ratingFive: 2
},
{
name: "Dima",
ratingOne: 3,
ratingTwo: 2,
ratingThree: 2,
ratingFour: 5,
ratingFive: 2
},
{
name: "Dima",
ratingOne: 3,
ratingTwo: 2,
ratingThree: 2,
ratingFour: 5,
ratingFive: 2
},
{
name: "Dima",
ratingOne: 3,
ratingTwo: 2,
ratingThree: 2,
ratingFour: 5,
ratingFive: 2
},
]
Максимальная оценка параметра - 5 баллов.
Я хочу посчитать средний рейтинг для каждого поля рейтинга Поста на основе общего количества комментариев и их рейтингов.
Тоесть, каждое поле Поста (ratingOne, ratingTwo, ratingThree,
ratingFour, ratingFive) имеет среднее значение по количеству комментариев. А поле avgrating поста имеет среднюю оценку на основе остальных полей рейтинга Поста (ratingOne и т.д.).
Суть в том, что люди ставят оценки по 5 параметрам (скорость, досступность и т.д.) и на основе этого рассчитывается общий рейтинг сервиса и общий рейтинг по каждому параметру. Дабы детальнее оценить сервис по каждому параметру.
Чешу голову, но не могу придумать как лучше реализовать. В mongoose есть параметр для этого и там все делается в пару строк, но мне нужно реализовать это на чистом js, так как использую graphcms, а там нет такой возможности как aggregate - avg, только count.