我試圖查詢Postgres(Amazon RDS上的9.6)中的JSON數據結構。數據包含一個對象數組,該對象數組又包含一個包含對象數組的元素。我想查找匹配其中一個嵌套數組中的鍵+值的所有記錄。在Postgres中有效查詢嵌套數組的JSON
鑑於行是這樣的:
{"drinkers" : [
{"name" : "geoff",
"beers" : [
{"name": "PBR"},
{"name" : "Bud Select"}
]},
{"name" : "tom",
"beers" : [
{"name": "Bud Light"},
{"name" : "Busch"}
]}
]}
我想找到那裏是一個drinkers.beers對象的名字是「PBR」的所有行。我來最近的是這樣的:
select jsonb_data
from bars
where jsonb_array_elements(jsonb_array_elements(data -> 'drinkers') -> 'beers') ->> 'name' = 'PBR'``
但是這不起作用,因爲where返回一個列表,而不是一個真正/假的匹配。我已經提出了使用子查詢,橫向連接等的其他解決方案,但所有這些解決方案都存在性能問題,即使使用了適當的杜松子酒索引。有關如何在Postgres中查詢這樣的數據結構的任何建議?
[內部ArrayField Django的JSONField](的可能的複製https://stackoverflow.com/questions/41134260/django- jsonfield-內部-arrayfield) – e4c5