Выборка по jsonb полю

Здравствуйте!
Помогите пожалуйста составить запрос для выборки по jsonb полю

Есть таблица

CREATE TABLE "public"."foo" (
"id" serial,
"data" jsonb
)
WITH (OIDS=FALSE)
;

В data вот такие данные:

[
    {
        "work":[
        ],
        "value":[
            "2085"
        ]
    },
    {
        "work":[
        ],
        "value":[
            "2086"
        ]
    },
    {
        "work":[
        ],
        "value":[
            "2087"
        ]
    }
]

Собственно вопрос, как выбрать записи с числом 2085 внутри value ?

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

https://www.postgresql.org/do

https://www.postgresql.org/docs/9.5/static/functions-json.html
json_extract_path_text('{"f2":{"f3":1},"f4":{"f5":99,"f6":"foo"}}','f4', 'f6')

Прошу прощения, но это не

Прошу прощения, но это не то.
Может я не правильно выразился, у меня многомерный массив объектов:

{
  "foo": [
    {"bar": 10}, {"bar": 20}, {"bar": 30}
  ]
}

Т.е. повторяющиеся ключи bar во вложенных объектах.

Данная функция эквивалентна выражению с оператором #>
''{"f2":{"f3":1},"f4":{"f5":99,"f6":"foo"}}''::json #> '{f4, f6}'
Мы как бы указываем чёткий путь от ключа до ключа

В моём случае она не работает, DATA #> {foo, bar} какой bar вернёт? - никакой, потому что их несколько

Нужно что-то типа in_array(), подскажете?

Ну и что собственное не так.

Ну и что собственное не так. Кроме json_extract_path_text есть и другие функции, о которых написано в документации.

SELECT json_extract_path_text(value, 'value')
 FROM json_array_elements('[{"work":[], "value":["2085"]},{"work":[],"value":["2086"]},{"work":[],"value":["2087"]}]')

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

Back to top

(С) Виктор Вислобоков, 2008-2023