首页 文章

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

提问于
浏览
0

我试图从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 回答

  • 0

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

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

相关问题