我的数据是这样的:
我想通过 updateOne 更改 prizes 数组中的第一个 8.8,我的代码是这样的:
let email = 'aa@bb.com'
let money = '8.8'
mongoserve.updateOne({
_id: data[0]._id
}, {
$set: { // 更新值,prize 为遍历变量
'prizes.$[prize]': {
email: email,
prize: money
}
}
}, {
arrayFilters: [ // 匹配值
{ 'prize': { $eq: money } }
]
}).then(data => {
res.send('抽奖成功')
}).catch(error => {
console.error(error)
})
但更新会将数组中两个 8.8 都修改掉
我尝试再 prizes.$[prize] 后面再追加 .$ 或 .1 结果都是报错
还望指点如何更新结果(数组)的第一个匹配项呢?
当然笨办法是先通过遍历将 prizes 修改好,之后赋给 updateOne 修改,但目前自己不想这么做