Postgres 9.4 jsonb Array als Tabelle
Ich habe ein JSON-Array mit ungefähr 1000 Elementen der Struktur "oid: aaa, instance: bbb, value: ccc".
{"_id": 37637070
, "data": [{"oid": "11.5.15.1.4", "value": "1", "instance": "1.1.4"}
, {"oid": "11.5.15.1.9", "value": "17", "instance": "1.1.4"}
, {"oid": "12.5.15.1.5", "value": "0.0.0.0", "instance": "0"}]}
oid
undinstance
sind pro json-Array eindeutig. Wenn ich die Möglichkeit hätte, die Struktur zu ändern, hätte ich das Format in @ geänderSchlüsselwer:
{"11.5.15.1.4-1.1.4":"1", "11.5.15.1.9-1.1.4": "17", "12.5.15.1.5-0": "0.0.0.0"}
Allerdings, wenn ich mit der alten Struktur bleiben muss
Was ist der schnellste Weg, um ein bestimmtes @ zu bekommoid
aus dem Array?
Was ist der schnellste Weg, um eine Tabelle mit 3 Spalten von @ zu erhaltoid
, instance
undvalue
. Oder noch besser eine Pivot-Tabelle mit der Instanz oid + als Spaltenüberschrift.
Für 2. Ich habe Folgendes versucht, aber es war auf einem großen Tisch ziemlich langsam:
select *
from (
select a->>'oid' oid, a->>'instance' instance, a->>'value' value1, id
from (
select jsonb_array_elements(config#>'{data}') a, id
from configuration
) b
) c
where oid = '1.3.6.1.4.1.7352.3.10.2.5.35.3' and instance = '0' and value1 <> '1';