首页 > 解决方案 > 无法读取未定义的属性“总计”

问题描述

如果我没有当月的数据,那么我会收到以下错误

无法读取未定义的属性“总计””

我试过的东西

$group: { _id: null,
        total: { $sum:{ $cond : [ {$eq : [ "$cost", undefined ]} , 0,'$cost'] }}
        }

下面是我当前的代码

var currentDate = new Date(); 
var currMonth = currentDate.getMonth()+1;    
Spending.aggregate([
    { $project: { month: { $month: '$date' }, cost: true } },
    { $match: { month: currMonth } },
    { $group: {
        _id: null,
        total: { $sum: '$cost'}
        }
    }
]).exec().then(result => {
    console.log(result);
    res.status(200).render('index', { total: result });
})
.catch(err => {
    console.log(err);
    res.status(500).json(err);
});

例如,如果我的数据库中有 1 个条目

{
date: 2019-05-10,
cost: 10
}

在这种情况下,如果 currMonth 为05,则总计为10

现在,如果 currMonth 是除5之外的任何内容,则会给出上述错误,

而预期输出为0

标签: mongodbmongooseaggregation-framework

解决方案


推荐阅读