2015-09-03 113 views
1

我有些JSON大意如下,其中的格式不能,不幸的是,被改變:Postgres裏的嵌套JSON查詢

{ 
    "elements": { 
    "nodes": [ 
     { 
     "data": { 
      "name": "Name here", 
      "color": "#FFFFFF", 
      "id": "n0" 
     } 
     } 
    ] 
    } 
} 

這是存儲在Postgres數據庫,我想退出通過上面嵌入JSON的ID記錄。到目前爲止,我已經嘗試過這樣的東西:

SELECT "data".* FROM "data" WHERE payload #>> '{elements,nodes,data,id}' = 'n0'; 

...沒有成功;儘管這個查詢運行它沒有返回。任何人都可以建議如何做到這一點?

回答

1

創建模式:

create table json (
    id serial primary key, 
    data jsonb 
); 

insert into json (data) values (
'{ "elements": { 
    "nodes": [ 
     { 
     "data": { 
      "name": "Name here", 
      "color": "#FFFFFF", 
      "id": "n0" 
     } 
     } 
    ] 
    } 
} 
'::jsonb); 

查詢本身:

select * from json js,jsonb_array_elements(data->'elements'->'nodes') as node 
where node->'data'->>'id' = 'n0'; 
+1

這樣的作品,謝謝。現在讓ActiveRecord生成這樣一個查詢... – knirirr