猫鼬-在更新请求的$ push中使用$ add

时间:2018-11-23 06:35:00

标签: mongodb mongoose sum push updates

如何通过findOneAndUpdate查询将多个值相加并将工资总额(基本工资,HRA等)推到PayrollModel。聚合$ sum,$ add和$ subtract可以与$ push一起使用吗?

PayrollModel.findOneAndUpdate(
{"user_id":user_id},
{
    $push:{
        gross_salary:{ $add ['$basic','$hra','$allowance','$pf','$prof_tax']},
        deductions:{$add:['$pf','$prof_tax']},
        netpay:{$subtract:['$gross_salary','$deductions']}
    }
},
{
    upsert:true,
    new:true
}
).exec();

错误:

"error": "Cast to number failed for value \"{ '$subtract': [ '$gross_salary', '$deductions' ] }\" at path \"netpay\""

工作模式: 但是,它可以与Aggregate&$ project正常工作,如下所示:

PayrollModel.aggregate([
{   $match: {"user_id":user_id}},
{
 $project:{
     gross_salary:{ $add:['$basic','$hra','$allowance','$pf','$prof_tax']},
     deductions:{$add:['$pf','$prof_tax']},
     netpay:{$subtract:['$hra','$allowance']}
    }
}
]).exec();

0 个答案:

没有答案