Как написать запрос, который включает выражение для атрибута PATH функции JSONB_SET, который содержит сравнение строк в POSTGRESQL - PullRequest
0 голосов
/ 26 марта 2019

Я опубликую свой вариант использования здесь

[
    {
       "type": "space",
       "selected": "p01",
       "uuid": "3132ef1b-5778-4fd3-9b0f-fa5efa30bfa7"
       "nested": [
          {
             "type": "wall",
             "selected": "m01",
             "uuid": "2f5ff537-10be-4777-b064-7a9c928e5b43",
             "nested": []
          },
          {
             "type": "wall",
             "selected": "m02",
             "uuid": "97699791-5b7d-43bd-add9-006c0fcfc5e7",
             "nested": []
          },
       ]
    },
    {
       "type": "space",
       "selected": "p02",
       "uuid": "6c3ba43e-7ce5-41fe-afdb-ea63210bae5b",
       "nested": []
    }
]

В приведенном выше JSON я хочу обновить значение "selected" key на основе uuid(s) .

Например, я знаю путь uuid, в котором я хочу изменить значение "selected" .Как uuid = "3132ef1b-5778-4fd3-9b0f-fa5efa30bfa7".nested[uuid = "97699791-5b7d-43bd-add9-006c0fcfc5e7"].

Так что, если он совпадает с путем, соответствующее значение "selected" должно быть изменено на некоторое желаемое значение.

Я хочу обновить это значение, написав запрос вpostgreSQL.Для этого я выбрал JSONB для обновления конкретного свойства.

Могу ли я написать выражения в пути для jsonb_set().Если нет, пожалуйста, дайте мне знать, есть ли другой способ обновить свойство до глубокого уровня, используя запрос к БД.

PS Я использую postgreSQL 9.6

...