在对数组进行更新的时候,云开发以提供以下方法,包括增加、删除、判定后增加等类型,但是缺少更新类型。
一般更新,我们可以直接使用
{
key:value
}
来进行更新,但是当字段为数组类型,其元素为对象,且需要按对象中键值条件更新时,已有的方法就捉襟见肘了,所以我建议是不是可以增加一个新的方法,类似于现在的pull方法——可以按条件删除——如下面这个官方的案例,
假设新方法为 'update',那么我们可以通过以下方式对一个记录中的某个数组字段进行按条件更新:
举例:
现有记录
{
_id:'test',
datas:{
data_a:[
{
mark:'aaa',
status:'normal'
},
{
mark:'bbb',
status:'normal'
},
{
mark:'ccc',
status:'normal'
}
],
//data_b...
//data_c...
}
}
要更新其中mark的值为'aaa'或'bbb'的status为'success',
db.collection('collection').doc('test').update({
'datas.data_a':db.command.update({ //或命名为where、select、set、reset等
mark:db.command.in(['aaa','bbb']) //数组中对象查询条件
},{
status:'success' //符合条件的元素,更新其指定字段
})
})
或者,现在是否有一个现成的方法可以完成这种操作,我疏忽了?请指教。
你直接https://developers.weixin.qq.com/miniprogram/dev/wxcloud/reference-sdk-api/database/command/aggregate/AggregateCommand.filter.html
fliter出来,然后update按照数据结构定向更新不就可以了嘛