如何在postgres中的jsonb单元内通过限制1执行订单?

时间:2018-10-28 00:42:02

标签: json postgresql jsonb

我在postgres中有一张桌子

CREATE TABLE my_table (
    id serial primary key,
    col_1 jsonb,

    ....

col_1内部,我有这样的结构

[{"date": "2018-10-13", "val_1": 90.8, "val_2": 87.9},
 {"date": "2018-10-03", "val_1": 90.2, "val_2": 83.2},
 {"date": "2018-10-11", "val_1": 92.8, "val_2": 88.9},
 ...
]

现在我需要查询类似的东西

SELECT "latest date from the jsonb" WHERE id = {some_id};

为此,我应该能够按日期降序对col_1中的数组进行排序/排序(首先使用to_date函数转换日期字符串),然后获取第一个元素该排序数组的。我如何在postgres中做到这一点?

1 个答案:

答案 0 :(得分:2)

您应该使用功能jsonb_array_elements():

取消嵌套json数组
select (jsonb_array_elements(col_1)->>'date')::date as date
from my_table
where id = 1
order by date desc
limit 1

    date    
------------
 2018-10-13
(1 row)