Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

164
Visualizações
Problem with getting average rating from mongodb in node.js express

I have a node.js express back-end with a mongodb database on the cloud(mongodb atlas). This is the Post object and I want to get the average grade from reviewerComments and userComments.

import mongoose from 'mongoose'

const postSchema = mongoose.Schema({
    game: {
    },
    reviewerComments: [
        {
            author: String,
            authorEmail: String,
            avatar: String,
            title: String,
            text: String,
            grade: Number,
            date: String
        }
    ],
    userComments: [
        {
            author: String,
            authorEmail: String,
            text: String,
            grade: Number,
            date: String
        }
    ]
}, {
    timestamps: true
})

const Post = mongoose.model('Post', postSchema)

export default Post

I have a API route that calls this function

export const getAverageGrades = async (req, res) => {
    const { id } = req.query
    try {
        const post = await Post.aggregate([
            {
                $match:
                    {
                        _id: mongoose.Types.ObjectId(`${id}`)
                    }
            },
            {
                $unwind: "$reviewerComments"
            },
            {
                $group:{
                    _id:{
                        "comment_id": "$reviewerComments.id",
                        "title": "$reviewerComments.title",
                        "grade": "$reviewerComments.grade",
                    },
                    avg_rating: {$avg:"reviewerComments.grade"}
                }
            },
            {
                $project:{
                    "id": "$_id.rating_id",
                    "title": "$_id.title",
                    "avg_rating": "$avg_rating"  // avg_rating returns null
                }
            }
        ])
        res.status(200).json(post);
    } catch (error) {
        console.log(error.message)
        res.status(404).json({ message: error.message });
    }
}

This function is returning a response where avg_rating is null, what am I doing wrong?

about 4 years ago · Juan Pablo Isaza
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda