使用Postgres JSONB查询查询数组中的数组
问题描述:
我在Postgres 9.4 db的字段中有一些JSON,我想查找给定名称是特定值的行,其中字段名为model
,JSON结构如下:使用Postgres JSONB查询查询数组中的数组
{
"resourceType": "Person",
"id": "8a7b72b1-49ec-43e5-bd21-bc62674d9875",
"name": [
{
"family": [
"NEWMAN"
],
"given": [
"JOHN"
]
}
]
}
所以,我想这一点:SELECT * FROM current WHERE model->'name' @> '{"given":["JOHN"]}';
(以及各种其他的猜测),但不符合以上的数据。我应该怎么做?
答
select t.*
from current t,
jsonb_array_elements(model->'name') names
where names->'given' ? 'JOHN'
我很兴奋,但:“不能提取对象的元素”。 –
这意味着实际的json结构与您的问题中描述的不同。 'name'对象必须是每一行中的一个数组。你可以[在这里测试](http://rextester.com/JDHIC62950) – klin
啊!我忘了限制资源类型的查询。谢谢 - 它的作品。 –