我正在尝试使用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}];
所以当我第一次点击时,我得到空数组作为响应,但是当服务器再次被击中时,我得到预期的响应。
答案 0 :(得分:0)
尝试以下,我没试过。
{
$match: {
doctor: doctorsId
}
},
{
$group: {
_id: null,
averageRating: { $avg: "$rating" },
count: { $sum: 1 }
}
},{$project:{_id:0, rating:"$averageRating", __v:"$count"}}