mongo中的$ Avg聚合

时间:2016-02-05 10:30:30

标签: node.js mongodb

我正在尝试使用mongodb中的$ avg计算字段的平均值。 代码: -

DoctorsReview.aggregate([
        { 
            $match: { 
                doctor: doctorsId
            }
        },
        { 
            $group: {
            _id: null, 
            averageRating: { $avg: "$rating" },
            count: { $sum: 1 }
            } 
        }],function(error, result){
             if(error)
                   console.log(error);
             console.log(result);
});

问题是当我第一次点击查询时,它返回一个空数组,但是当我再次点击它时,它会返回我之前命中的预期结果。

仅供参考我想在DoctorsReview模型中计算对应于doctorsId的评分平均值。

请帮忙。

医生评论样本: -

{ 
"_id" : ObjectId("56b473b0b9d8b5b01c6d1529"), 
"rating" : NumberInt(4), 
"review" : "Poor", 
"user" : ObjectId("5673a0e86a8141c00c85a743"), 
"doctor" : ObjectId("56b1cbb4e8e806f8229c1afa"), 
"date" : ISODate("2010-12-12T00:00:00.000+0000"), 
"time" : NumberInt(19), 
"__v" : NumberInt(0)
}

预期回应: -

[{ _id: null, averageRating: 4, count: 1}];

所以当我第一次点击时,我得到空数组作为响应,但是当服务器再次被击中时,我得到预期的响应。

1 个答案:

答案 0 :(得分:0)

尝试以下,我没试过。

{ 
        $match: { 
            doctor: doctorsId
        }
    },
    { 
        $group: {
        _id: null, 
        averageRating: { $avg: "$rating" },
        count: { $sum: 1 }
        } 
    },{$project:{_id:0, rating:"$averageRating", __v:"$count"}}