JSONB query builder
JSONB query builder — визуальный конструктор поиска по jsonb-колонкам. Собирает корректный SQL с учётом операторов ->, ->>, @>, ?, jsonb_path_query без необходимости их помнить.
Открыть
- В Schema Browser: правый клик на jsonb-колонку → Build query….
- В JSONB-редакторе: кнопка Find similar в шапке.
- Из палитры: ⌘+K →
Build JSONB query.
Что выглядит как форма
Сверху — выбор таблицы и колонки:
FROM users.profile_data
Дальше — список условий с кнопкой + Add filter.
Типы условий
Path equals
«Ключ по пути имеет такое значение»:
profile_data → 'name' = 'Alice'
Генерирует:
WHERE profile_data->>'name' = 'Alice'
Path exists
«Этот ключ существует в объекте»:
profile_data has key 'phone_verified'
→
WHERE profile_data ? 'phone_verified'
Path contains
«Объект содержит этот sub-объект» (использует @>):
profile_data contains {"role": "admin", "active": true}
→
WHERE profile_data @> '{"role":"admin","active":true}'::jsonb
Это самый частый и самый быстрый тип проверки на jsonb с GIN-индексом.
Array element equals
«В массиве есть элемент с таким значением»:
profile_data → 'tags' has element 'premium'
→
WHERE profile_data->'tags' ? 'premium'
Numeric comparison
«Численное значение по пути сравнивается с числом»:
profile_data → 'age' > 18
→
WHERE (profile_data->>'age')::int > 18
ide99 автоматически приводит к нужному типу. Если в данных не число — Postgres вернёт ошибку, ide99 покажет понятное сообщение.
JSON path query
Для сложных путей с условиями используется jsonb_path_query:
profile_data path: $.addresses[*] ? (@.country == "DE")
→
WHERE jsonb_path_exists(
profile_data,
'$.addresses[*] ? (@.country == "DE")'
)
Логика между условиями
Сверху — переключатель AND / OR. Группировка через + Group (создаст вложенный блок с собственным AND/OR).
Превью SQL
В нижней части формы — собранный запрос:
SELECT id, profile_data
FROM users
WHERE profile_data @> '{"role":"admin"}'::jsonb
AND (profile_data->>'age')::int > 18
ORDER BY id
LIMIT 100;
Кнопки:
- Copy — в буфер, вставить куда угодно
- Open in editor — откроет новую вкладку SQL-редактора с этим запросом
- Run — выполнить сразу и открыть результат
Подсказки автокомплита
При вводе пути (profile_data → ...) ide99 показывает реально встречающиеся ключи в этой колонке (если jsonb-сканирование схемы не выключено). Это сильно ускоряет — не нужно помнить структуру наизусть.
Совет: что использовать первым
Из всех типов условий @> (path contains) — самое часто-полезное:
- Простой синтаксис
- Использует GIN-индекс (
CREATE INDEX ... USING gin (col jsonb_path_ops)) для быстрого поиска
- Работает на любую глубину вложенности
Если что-то не находится — проверьте EXPLAIN-планом, что используется индекс. На больших таблицах без GIN-индекса любой jsonb-поиск превратится в Seq Scan.
Что дальше