在特定键/值上的jsonb数组上选择

时间:2018-02-06 16:33:30

标签: arrays postgresql jsonb

我有一个包含这些数据的jsonb字段:

[{"FieldName":"wire1","Metadata":[{"Date":"2018-02-06T11:32:57.4022774+01:00","Source":"exampleSource"}]},
{"FieldName":"wire2","Metadata":[{"Date":"2018-02-06T11:32:57.4022774+01:00","Source":"exampleSource"}]},
{"FieldName":"wire3","Metadata":[{"Date":"2018-02-06T11:32:57.4022774+01:00","Source":"exampleSource"}]}]

作为select的一部分,访问此数组中FieldName = FieldValue的正确方法是什么?我们尝试SELECT meta::json->0 FROM myTable,并返回null。 (meta是包含metaData的列名称)

我希望得到的是,在一个选择中,返回FieldName = wire1,或Source = exampleSource,或两者都为真的所有行。

1 个答案:

答案 0 :(得分:0)

你需要的是 jsonb_array_elements 功能。

- > 会返回一个对象

SELECT jsonb_array_elements(**columnName**)->'FieldName' FROM ....

returns FieldName object

- >> 会返回文字

SELECT jsonb_array_elements(**columnName**)->>'FieldName' FROM ....

returns "wire1" text