You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用单独列的嵌套JSONB值更新指定目标列

实现方案

你需要在col()方法中直接使用PostgreSQL原生的JSONB属性取值语法,正确代码如下:

const { col } = require('sequelize');

await UserActivity.update(
  {
    type: col(`activity->>'type'`)
  },
  {
    where: {
      activity: { id: 4285299988 }
    }
  }
);

补充说明

  • PostgreSQL针对JSONB类型提供了两个常用取值操作符:
    • ->:取到的结果为JSONB类型
    • ->>:取到的结果为文本字符串类型
  • 如果你的type字段是数值、布尔等非字符串类型,可以对取值结果做强制类型转换,比如取整的写法为col("(activity->>'type')::int")
  • 如果需要批量更新全表所有行的type字段,直接删除where条件即可
  • 也可以用sequelize.literal替换col实现相同效果,写法为type: sequelize.literal("activity->>'type'")

内容的提问来源于stack exchange,提问作者Bryson Kruk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 06:48:02