【问题标题】:Get element by unknown key from jsonb in Postgres从 Postgres 中的 jsonb 通过未知键获取元素
【发布时间】:2018-08-02 01:24:50
【问题描述】:

我有以下数据结构:

{
    "proccess1": {
        "error": "error1 description",
        "nextRetryAt": "2018-02-22T07:39:00.325Z",
        "attemptsMade": 148,
        "firstFailedAt": "2018-02-16T06:40:41.327Z"
    },
    "proccess2": {
        "error": "error2 description",
        "nextRetryAt": "2019-03-16T06:41:01.566Z",
        "attemptsMade": 77,
        "firstFailedAt": "2016-03-15T04:35:12.248Z"
    }
}

我的问题是如何构建查询

select * 
from data 
where data->[0]->>'nextRetryAt' = 'my passed value'

我不知道键 proccess1proccess2 的名称。他们可能有任何价值。

【问题讨论】:

    标签: json postgresql jsonb


    【解决方案1】:

    https://www.postgresql.org/docs/current/static/functions-json.html

    jsonb_object_keys 会帮助你

    https://www.db-fiddle.com/f/9fB1pfb3BWv4v2wBUwU1Bd/0

    with c(j) as (values('{
        "proccess1": {
            "error": "error1 description",
            "nextRetryAt": "2018-02-22T07:39:00.325Z",
            "attemptsMade": 148,
            "firstFailedAt": "2018-02-16T06:40:41.327Z"
        },
        "proccess2": {
            "error": "error2 description",
            "nextRetryAt": "2019-03-16T06:41:01.566Z",
            "attemptsMade": 77,
            "firstFailedAt": "2016-03-15T04:35:12.248Z"
        }
    }'::jsonb))
    select j->jsonb_object_keys(j)->>'nextRetryAt' from c;
    

    【讨论】:

      猜你喜欢
      • 2020-11-26
      • 2017-01-14
      • 1970-01-01
      • 1970-01-01
      • 2018-03-11
      • 2022-07-02
      • 2015-07-12
      • 2021-01-08
      • 2017-07-24
      相关资源
      最近更新 更多