所以我有一个json(在文本字段中)并且我使用postgresql并且我需要查询该字段但它嵌套了一点深。这是格式:
[
{
"name":"First Things",
"items":[
{
"name":"Foo Bar Item 1",
"price":"10.00"
},
{
"name":"Foo Item 2",
"price":"20.00"
}
]
},
{
"name":"Second Things",
"items": [
{
"name":"Bar Item 3",
"price":"15.00"
}
]
}
]
我需要在name
节点内查询items
。我尝试了一些查询,但没有用,比如:
.where('this_json::JSON @> [{"items": [{"name": ?}]}]', "%#{name}%")
。我该怎么去这里?
我可以像this_json::JSON -> 'key' = ?
那样查询普通的JSON格式,但需要这方面的帮助。
答案 0 :(得分:0)
在这里,您需要使用json_array_elements()
两次,因为您的顶级文档包含json数组,而items
键包含子文档数组。示例psql
查询可能如下:
SELECT
item->>'name' AS item_name,
item->>'price' AS item_price
FROM t,
json_array_elements(t.v) js_val,
json_array_elements(js_val->'items') item;
其中t
- 是您的表格的名称,v
- 您的JSON
列的名称。