我在 MongoDB 中有这样的数据
{"_id":{"$oid":"5ec4ed0b94996124187b95ce"},
"cid":"245345323",
"dtl":[
{"_id":{"$oid":"5ed5ab655df7930ec424be1e"},
"sid":"test",
"amt":{"$numberInt":"48"},
"Name":"test"},
{"_id":{"$oid":"5ed5ac9f79a75423d4bc0270"},
"sid":"s",
"amt":{"$numberInt":"14"},
"Name":"sfds"},
{"_id":{"$oid":"5ed5ace7d204ab144863ed7a"},
"sid":"wesad",
"amt":{"$numberInt":"6"},
"Name":"2sdad"
},
"updated":{"$date":{"$numberLong":"1589964043787"}},
"__v":{"$numberInt":"6"},
"TotalAmt":{"$numberInt":"68"}}
Run Code Online (Sandbox Code Playgroud)
仅当数组中的 amt 字段的值大于 10 时,我才需要更新 TotalAmt 字段。我使用了以下 2 个选项
PM.findOneAndUpdate(
{
_id: MongoId,
},
[
{
$set: {
//TotalAmt: { $sum: '$dtl.amt' },
/*TotalAmt: {
$cond: {
if: { $gte: ['$dtl.amt', 10] },
then: { $sum: '$dtl.amt' },
else: 0,
},
},*/
},
},
],
{ new: true }
)
Run Code Online (Sandbox Code Playgroud)
在没有 amt > 10 条件的情况下它工作正常(第一个选项被注释)。但如果我添加条件则不起作用。任何帮助,将不胜感激。谢谢