云开发文档里写的方式是如果更新第1个就写字段名为’array.0’。如:

但是我想更新一个数组的第i个元素(存的是对象)的key属性,i为参数,我目前使用了模版字符串`array.${i}.key`和字符串拼接‘array.’+i+’.key’,这两种方法都不行。
在看到这篇教程的第一个解决办法之后,我找到了解决思路!
用$位置占位符:
exports.main = async(event, context) => {
return db.collection('user').where({
'_id':event.docID,
'array.key': event.key
}).update({
data: {
'array.$.key': event.value,
arrNum: _.inc(1)
},
success: res => {
console.log(res)
}
})
}
where不仅可以查找文档,还可以查找文档里的某个数组里符合条件的元素的位置!
之后使用存有位置数据的$符号就能更新数组里第i个元素的属性了。
我的原回答:云函数如何更新指定的数组元素?- 微信开放社区 https://developers.weixin.qq.com/community/develop/doc/0000e479ca4890c7be1941bbc5b800

本文介绍了一种在云开发环境中更新数组特定元素的方法。通过使用$位置占位符,可以精确地定位并更新数据库中某数组的指定元素,解决了传统方法无法直接更新数组内对象属性的问题。
2247

被折叠的 条评论
为什么被折叠?



