使用Postgres JSONB查询查询数组中的数组

时间:2017-08-16 06:08:33

标签: arrays json postgresql jsonb

我在Postgres 9.4 db中的字段中有一些JSON,我想找到给定名称是特定值的行,其中字段名为model,JSON结构如下:

{
    "resourceType": "Person",
    "id": "8a7b72b1-49ec-43e5-bd21-bc62674d9875",
    "name": [
      {
        "family": [
          "NEWMAN"
        ],
        "given": [
          "JOHN"
        ]
      }
    ]
}

所以我尝试了这个:SELECT * FROM current WHERE model->'name' @> '{"given":["JOHN"]}';(以及其他各种猜测),但这与上述数据不符。我该怎么做?

1 个答案:

答案 0 :(得分:2)

使用功能jsonb_array_elements():

select t.*
from current t,
jsonb_array_elements(model->'name') names
where names->'given' ? 'JOHN'