So wird ein JSON-Objekt in ein verschachteltes Array in einer JSONB-Spalte verschoben

Ich muss ein JSON-Objekt irgendwie in ein verschachteltes Array potenziell vorhandener JSON-Objekte verschieben - siehe "Seiten" im folgenden JSON-Snippet.

{
    "session_id": "someuuid",
    "visitor_ui": 1,
    "pages": [
        {
            "datetime": "2016-08-13T19:45:40.259Z",
            "duration,": 0,
            "device_id": 1,
            "url": {
                "path": "/"
            }
        },
        {
            "datetime": "2016-08-14T19:45:40.259Z",
            "duration,": 0,
            "device_id": 1,
            "url": {
                "path": "/test"
            }
        },
        // how can i push a new value (page) here??
    ]
    "visit_page_count": 2
}

Ich kenne dasjsonb_set(target jsonb, path text[], new_value jsonb[, create_missing boolean]) (obwohl es immer noch ein bisschen schwer zu verstehen ist) aber ich denke, das zu benutzen, würde erfordern, dass ich zuerstSELECT die gesamte JSONB-Spalte, um herauszufinden, wie viele Elemente innerhalb von "pages" bereits vorhanden sind und zu welchem Index sie mit @ verschoben werden solljsonb_set, richtig? Ich hoffe, dass es in Postgres 9.5 / 9.6 einen Weg gibt, das Äquivalent dessen zu erreichen, was wir in Programmiersprachen kennen, z.pages.push({"key": "val"}).

Was wäre der beste und einfachste Weg, dies mit Postgresql 9.5 oder 9.6 zu tun?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage