云开发文档里写的方式是如果更新第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