如何使用PostgreSQL查询Jsonb数据?

问题描述

我正在通过大胆地使用UUID和那些数据来创建一些视图,我设法从第一层获得了期望的结果,但是在尝试获取第二层数据时遇到了问题。 我在tiledata列中工作的表是一些我想访问的嵌套数据,这是

table I am working on

运行查询

SELECT tileid,nodegroupid,tiledata ->'34cfea8a-c2c0-11ea-9026-02e7594ce0a0' AS ACTOR
   FROM tiles
   WHERE tiledata -> '34cfea8a-c2c0-11ea-9026-02e7594ce0a0' IS NOT NULL;

我知道了

after query

如何从此嵌套数据中获取例如resourceId,

obtaining all the rows which have resourceId

解决方法

您可以使用jsonb_array_elements函数将JSONB数组的每个元素提取为新的JSONB值,您可以在其上使用任何其他JSONB函数或运算符。

要知道的是,每个数组值都会在记录集中生成一个新行。


您可以尝试以下方法:

SELECT tileid,nodegroupid,jsonb_array_elements(tiledata ->'34cfea8a-c2c0-11ea-9026-02e7594ce0a0')->'resourceID'
   FROM tiles
   WHERE tiledata -> '34cfea8a-c2c0-11ea-9026-02e7594ce0a0' IS NOT NULL;

有关简单示例,请参见this fiddle

有关更多详细信息,请参见the doc