如何用PostgreSQL查询Jsonb数据?

How to query Jsonb data with PostgreSQL?

我正在通过基本 UUID 和一些概念处理这些数据来创建一些视图,我设法获得了我对第一级的预期,但在尝试获取第二级数据时遇到了问题。 我在 tiledata 列中工作的 table 是一些我想访问的嵌套数据,这是

当我运行查询

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

我得到这个

我如何从这个嵌套数据中获取 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