收藏
回答

云开发云数据库,匹配并更新数组中的元素,$符号有问题?

框架类型 问题类型 终端类型 AppID 环境ID 基础库版本
小程序 Bug 微信iOS客户端 wx332bce1c2a0bbced mr-z 2.8.0

https://developers.weixin.qq.com/miniprogram/dev/wxcloud/guide/database/query-array-object.html#匹配并更新数组中的元素

使用$关键字更新数组匹配位置某元素,构建查询参数时,如果同时有另一个数组型字段存在,则$永远匹配到位置0进行更新。


在如下示例中,会始终更新code: 'x'这个元素,而不是预期的code: 'y'元素。


数据结构示例如下:

{
  arrayField: ['a', 'b', 'c'],
  albums: [
    {code: 'x', others: 'apple'}
    {code: 'y', others: 'banana'}
  ]
}


代码示例如下:

.where({
  arrayField: 'a',
  'albums.code': 'y',
}).update({
  data: {
    'albums.$.others': 'orange'
  }
})

最后一次编辑于  2020-04-22
回答关注问题邀请回答
收藏

1 个回答

  • o0o有脾气的酸奶
    o0o有脾气的酸奶
    2020-04-22

    你的数据表结构是怎么样的

    2020-04-22
    有用
    回复 5
    • 郑旭东
      郑旭东
      2020-04-22
      2020-04-22
      回复
    • 郑旭东
      郑旭东
      2020-04-22
      单条记录大概长这样
      2020-04-22
      回复
    • o0o有脾气的酸奶
      o0o有脾气的酸奶
      2020-04-22回复郑旭东
      你的更新语句就和这个类似吧,本来就只更新第一个吧
      2020-04-22
      回复
    • 郑旭东
      郑旭东
      2020-04-22回复o0o有脾气的酸奶
      期望更新albums里的第二条code: 'y',但实际更新了code: 'x'这条
      2020-04-22
      回复
    • 郑旭东
      郑旭东
      2020-04-22
      如果我把arrayField从where里去掉,就能更新第二条
      2020-04-22
      回复
登录 后发表内容
问题标签