我试图从MongoDB集合(使用Mongoose)获取注释,并使用聚合管道计算注释的数量和平均值 . 但是,当第一个$ match返回任何内容时,脚本崩溃时出现'无法读取属性'avg'of undefined'错误 .
var q = Comment.aggregate([
{ $match: {
_post: this,
rating: { $gt: 0 },
}},
{ $group: {
_id: null,
avg: { $avg: "$rating" },
count: { $sum: 1 }
}}
]);
q.exec(function(err, result) {
cb(err, result[0].avg, result[0].count);
});
当我省略_post $ match时,结果包含所有注释的正确平均值和计数,但是当$ match没有返回任何内容时,它只会引发错误..如何修复?
1 回答
我在看错了地方 . 错误消息未引用查询中的“avg”,而是引用回调函数中的result.avg . 就在发布之前,我已经将回调函数参数更改为result [0] .avg,现在错误消息是关于无法从undefined读取'0' .
盯着自己在错误的地方盲目..发布太快了..