我正在尝试从MongoDB集合中获取注释(使用Mongoose)并使用聚合管道计算注释数和平均值。但是,当第一个$匹配返回任何内容时,脚本会因“无法读取”属性而导致崩溃#av;'未定义的'错误。
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没有返回任何内容时,它只会抛出错误..如何修复?
答案 0 :(得分:0)
我看错了地方。错误消息未引用“平均值”。在查询中,但在回调函数中的result.avg。就在发布之前,我已经将回调函数参数更改为结果[0] .avg,现在错误消息是关于无法读取' 0'来自undefined。
盯着自己在错误的地方瞎了..发布太快了..