postgresql的jsonb数据查询和修改的方法

什么是jsonb
由PostgreSQL文档定义的数据类型json和jsonb几乎相同;关键的区别在于json数据存储为JSON输入文本的精确副本,而jsonb以分解的二进制形式存储数据;也就是说,不是ASCII / UTF-8字符串,而是二进制代码。

本文主要讲的是如何随心所欲的查询和修改postgresql中jsonb格式的数据

一、查询

简单查询

# 存储的是key-value格式的数据,通过指定的key获取对应的值
# 使用->返回的结果是带引号的
select '{"nickname": "goodspeed", "avatar": "avatar_url"}'::json->'nickname' as nickname;
# 使用->>返回结果不带引号
select '{"nickname": "goodspeed", "avatar": "avatar_url", "tags": ["python", "golang", "db"]}'::json->>'nickname' as nickname;

复杂查询

# {tags,0}代表查询key=‘tags',且value为数组中数组的第一个元素
select '{"nickname": "gs", "avatar": "avatar_url", "tags": ["python", "golang", "db"]}'::json#>'{tags,0}' as tag;
# {aa,b,0}代表查询key=‘aa',对应的value中,key=‘b'的value中,数组的第一个元素
select '{"nickname": "gs", "avatar": "avatar_url", "tags": ["python", "golang", "db"], "aa":{"b": [{"c": 1}]}}'::jsonb#>>'{aa,b,0}';

二、修改

修改

jsonb_set(原数据, 需要更改的位置, 替换的值,是否不存在时新增),
select jsonb_set('[{"f1":1,"f2":null},2,null,3]', '{0,f1}','[2,3,4]', false);

到此这篇关于postgresql的jsonb数据查询和修改的文章就介绍到这了,更多相关postgresql jsonb数据查询和修改内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • PostgreSQL 更新JSON,JSONB字段的操作

    直接使用 update 表名 set 列名 = (jsonb_set(列名::jsonb,'{key}','"value"'::jsonb)) where 条件 要注意里面的单引号和双引号. 补充:向PostgreSQL中json中加入某个字段 或者更新某个字段的SQL语句 需求:通过SQL的方式,对JSON里面的某个字段统一处理,更新成一个新值 1.向PostgreSQL中json中加入某个字段.例如:向users表中id为3的data列中加入 {"uptate_data&

  • postgresql 实现修改jsonb字段中的某一个值

    我就废话不多说了,大家还是直接看代码吧~ UPDATE tablename SET tags = jsonb_set(tags-'landuse_area', '{landuse_area}',('"' || round((ST_Area(ST_Transform(geom,4527)) * 0.0015) :: NUMERIC,3) || '"')::jsonb, TRUE) WHERE tags @> '{"name":"张三"}';

  • 介绍PostgreSQL中的jsonb数据类型

    PostgreSQL 9.4 正在加载一项新功能叫jsonb,是一种新型资料,可以储存支援GIN索引的JSON 资料.换言之,此功能,在即将来临的更新中最重要的是,如果连这都不重要的话,那就把Postgres 置于文件为本数据库系统的推荐位置吧. 自从9.2开始,一个整合JSON 资料类型已经存在,带有一整套功能(例如资料产生和资料解构功能),还有9.3新增的操作者.当使用JSON 资料类型,资料的被存储成一完全一样的副本,功能还在此之上运作,还另外需要后台运作的重新分析. 这心得JSONB 资

  • postgresql的jsonb数据查询和修改的方法

    什么是jsonb 由PostgreSQL文档定义的数据类型json和jsonb几乎相同;关键的区别在于json数据存储为JSON输入文本的精确副本,而jsonb以分解的二进制形式存储数据;也就是说,不是ASCII / UTF-8字符串,而是二进制代码. 本文主要讲的是如何随心所欲的查询和修改postgresql中jsonb格式的数据 一.查询 简单查询 # 存储的是key-value格式的数据,通过指定的key获取对应的值 # 使用->返回的结果是带引号的 select '{"nickna

  • mysql聚合统计数据查询缓慢的优化方法

    写在前面 在我们日常操作数据库的时候,比如订单表.访问记录表.商品表的时候. 经常会处理计算数据列总和.数据行数等统计问题. 随着业务发展,这些表会越来越大,如果处理不当,查询统计的速度也会越来越慢,直到业务无法再容忍. 所以,我们需要先了解.思考这些场景知识点,在设计之初,便预留一些优化空间支撑业务发展. sql聚合函数 在mysql等数据中,都会支持聚合函数,方便我们计算数据. 常见的有以下方法 取平均值 AVG() 求和 SUM() 最大值 MAX() 最小值 MIN() 行数 COUNT

  • Mysql如何对json数据进行查询及修改

    目录 对json数据进行查询及修改 几个相关函数 示例 查询 来看看修改 删除 插入 Mysql处理json数据 对json数据进行查询及修改 使用 字段->'$.json属性' 进行查询条件 使用 json_extract 函数查询,json_extract(字段, "$.json属性") 根据json数组查询,用 JSON_CONTAINS(字段, JSON_OBJECT('json属性', "内容")) : [{}]查询这种形式的json数组 MySQL

  • layui table表格数据的新增,修改,删除,查询,双击获取行数据方式

    layui table利用参数新增,修改,删除,查询,双击数据行获取本行数据等.模块化使用layui table表格,通过二次封装实现语法上的解耦使用layui table,使用参数就可以以及外部的方法调用即可实现对layui table表格的操作,通过封装,把更多自主权交给页面自定义,layui:v:2.3.0.感谢layui的作者贤心. 演示效果如下: 以上json显示不完整是录屏的原因,请见谅! var Table = function(ops){ this.dataList = [];

  • Node.js连接postgreSQL并进行数据操作

    前言 PostgreSql是一个面向对象的关系数据库,postgis是一个基于PostgreSql的空间数据库插件,主要用于管理地理空间数据.因此在GIS领域,广泛使用PostgreSql作为空间数据库. 首先使用npm安装数据库连接模块: npm install --save pg 连接池创建 然后代码中引入pg模块,并编写数据库配置: var pg = require('pg'); // 数据库配置 var config = { user:"postgres", database:

  • 详解PostgreSQL提升批量数据导入性能的n种方法

    关键字:批量数据导入,数据加载,大量插入,加快,提升速度 多元化选择时代,人生里很多事物都是如此,凡事都没有一成不变的方式和方法.不管白猫黑猫,能抓老鼠的就是好猫,适合自己的就是最好的. 提升批量数据导入的方法亦是如此,没有何种方法是最优的,应用任何方法前根据自己的实际情况权衡利弊,做出选择. 批量导入数据之前,无论采取何种方式,务必做好相应的备份. 导入完成后亦需对相应对象进行ANALYZE操作,这样查询优化器才会按照最新的统计信息生成正确的执行计划. 下面正式介绍提升批量数据导入性能的n种方

  • 利用Mybatis向PostgreSQL中插入并查询JSON字段

    目录 应用场景介绍 数据insert 数据select BATCH 批量插入 前言: 这里我使用的是TimescaleDB,加了一个时间戳字段,不过没差.关于PostgreSQL中Json数据类型的操作,可以参考官网. 应用场景介绍 将TCP发过来的数据包(通过消息队列发过来)解析出数据(一个数据包含有多帧,一帧中含有多条信息),并和本地规则表的格式对应起来.以JsonLineMsg实体类代表对应的一帧数据: package tsdb.entity; import lombok.AllArgsC

  • AJAX for PHP简单表数据查询实例

    功能介绍:AJAX WebShop 3从Beta2开始支持PHP的开发了,AJAX WebShop集成了PHP5的开发环境,因此不需要额外安装配置PHP,本例将实现一个AJAX for PHP的简单数据查询操作,这个例子是单表操作,也可以实现主从表的数据查询. 一.数据表说明 例子采用了Access数据库,当然你也可以使用mysql 或其他类型数据库,数据库名称为:demo.mdb,表名为product,创建字段分别是PRODUCT_ID, PRODUCT_NAME, PRODUCT_PRICE

  • JSP使用JDBC完成动态验证及采用MVC完成数据查询的方法

    本文实例讲述了JSP使用JDBC完成动态验证及采用MVC完成数据查询的方法.分享给大家供大家参考.具体如下: 一.目标: ① 掌握JDBC链接数据库的基本过程: ② 掌握使用JDBC进行数据查询. 二.主要内容: ① 在上一次的实例基础上,通过连接数据库完成用户登录功能,介绍JDBC的基本用法: ② 通过显示所有用户信息进一步介绍JDBC的用法和查询结果的处理. 1.JDBC概念 Java Database Connectivity的缩写,用于连接Java应用程序与各种关系数据库的标准接口.对于

  • 简析SQL Server数据库用视图来处理复杂的数据查询关系

    SQL Server数据库用视图来处理复杂的数据查询关系是本文我们主要要介绍的内容,该内容是这样想到的:在辅助教务系统那块的时候,我做的一个页面是对单个老师和整个学院老师的工作量查询,这个操作设计到了三个本数据库中的表和一个不同数据库中的一个教师信息表,如果用普通的SQL语句是非常难实现的,由于我刚开始做的视频播放系统,数据库的表相对比较少,没有涉及到这么复杂的处理关系,刚开始感觉很难. 后来想到用视图可以解决多个表的复杂关系,但是另外一张表是不同数据库的,是否依然能进行操作,经过测试之后,居然

随机推荐