MongoDB / Mongoose聚合,阶段结果未定义

时间:2016-04-22 08:44:30

标签: node.js mongodb mongoose

我正在尝试从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没有返回任何内容时,它只会抛出错误..如何修复?

1 个答案:

答案 0 :(得分:0)

我看错了地方。错误消息未引用“平均值”。在查询中,但在回调函数中的result.avg。就在发布之前,我已经将回调函数参数更改为结果[0] .avg,现在错误消息是关于无法读取' 0'来自undefined。

盯着自己在错误的地方瞎了..发布太快了..