如何通过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();