收藏
回答

多层数据(数组对象嵌套)数据库怎么做更新?

框架类型 问题类型 终端类型 AppID 基础库版本
小程序 需求 客户端 wx0c31418dde47be99 2.3.2

简单的数据增删改查官方都有案例,但多层的怎么准确读取判断到某条记录,小白我就不会了,特来请教。

在一个名为oil_price的表下面存储着和油站(station_id:"W9yCUdx_Lia3NQE8")有关的价格,价格以天为单位,每天存储92# 95#等型号油料的历史价格。

如果我现在要更新92#的价格,我希望是先判断是否存在当天( update_time这个字段可以作为判断)的历史价格,有的话进行替换更新92#的价格,没有的话,插入一条新数据。数据库小白,想知道云开发中的云数据库应该怎么写这个语句。

//这是一条价格记录,station_id是油站的id,一个油站全表只存在这么一条

{

  _id:"W90ndau9e31Z7Krk",

  station_id:"W9yCUdx_Lia3NQE8",

   create_time: "2018-11-03T04:37:04.295Z",

  price:[

   {

    oil:[

     {

      oil_type: "92#",

      price:8.60

     },

     {

      oil_type: "95#",

      price:9.21

     },

     {

      oil_type: "98#",

      price:9.70

     },

     update_time:"2018-11-03T04:38:10.785Z"

    ]

    },

   {

    oil:[

     {

      oil_type: "92#",

      price:9.12

     },

     {

      oil_type: "95#",

      price:9.87

     },

     {

      oil_type: "98#",

      price:10.31

     },

     update_time:"2018-11-02T08:38:10.785Z"

    ]

    }



  ]

}

从下午纠结到现在了,搞不对。。。

最后一次编辑于  2018-11-03
回答关注问题邀请回答
收藏

3 个回答

  • 叶明星
    叶明星
    2天前

    解决了没,

    哈哈哈,

    感觉有个最笨的办法,整个get下来,改完然后再推回去

    2天前
    有用
    回复 1
    • 叶明星
      叶明星
      2天前
      // 以下方法只会更新 style.color 为 red,而不是将 style 更新为 { color: 'red' },即不影响 style 中的其他字段
      db.collection('todos').doc('doc-id').update({
        data: {
          style: {
            color: 'red'
          }
        }
      })
      // 以下方法更新 style 为 { color: 'red', size: 'large' }
      db.collection('todos').doc('doc-id').update({
        data: {
          style: _.set({
            color: 'red',
            size: 'large'
          })
        }
      })
      2天前
      回复
  • 那年冬天
    那年冬天
    2019-11-28

    解决了没,我也遇到类似的问题

    2019-11-28
    有用
    回复 1
    • w
      w
      2019-12-13
      没····
      2019-12-13
      回复
  • 兰昊
    兰昊
    2018-11-12

    大家跳转小程序的时候有没有遇到过这个问题啊?navigateToMiniProgramAppIdList

    2018-11-12
    有用
    回复 1
    • w
      w
      2019-12-13
      没有遇到
      2019-12-13
      回复
登录 后发表内容