Comments 15
Отличные конкурентные приемущества. Теперь будем ждать поддержки json и jsonb в Node.js ORM-ках.
-4
У меня построитель запросов knex.js, он уже умеет автоматом преобразовывать json в объект JS и наоборот, при выборке / обновлении соответственно.
На его базе построена ORM Bookshelf.js, я думаю, там как раз идёт имплементация выборок по json, либо всё уже есть. Так или иначе, всегда есть raw query.
На его базе построена ORM Bookshelf.js, я думаю, там как раз идёт имплементация выборок по json, либо всё уже есть. Так или иначе, всегда есть raw query.
-1
Когда уже появится возможность авторефреша материализованных представлений…
+3
Можете пояснить про null подробнее в json и jsonb? Их нельзя хранить или какие то другие ограничения (при создании запросов к полям н-р)?
0
>… Операторы @>,? и некоторые другие специфичны для типа jsonb
Довольно сомнительное решение — ведь JSON — это просто структура, но состоящая из таких же простых типов, как и другие колонки таблицы — зачем им нужен новый набор крючков? Достаточно парсеру запросов определить, что работают над JSONb полем и СТАНДАРТНЫЕ операторы использовать в новом контексте — EXIST, >, <, = и т.п.
Довольно сомнительное решение — ведь JSON — это просто структура, но состоящая из таких же простых типов, как и другие колонки таблицы — зачем им нужен новый набор крючков? Достаточно парсеру запросов определить, что работают над JSONb полем и СТАНДАРТНЫЕ операторы использовать в новом контексте — EXIST, >, <, = и т.п.
0
Мне кажется, что правильней именно отдельными операторами, чтобы не смешивать понятия. Так как EXISTS — это существование набора строк, < — меньше в сравнивании двух скаляров. Иначе прийдется в голове держать другой смысл для JSON-поля (и обращатся к структуре таблицы, чтобы посмотреть, что именно за операция и для чего применяется).
+1
в последнем примере с security_barrier ноутис не лишний с секретной книгой?
+1
Здравствуйте, у меня почему-то не видит тип данных jsonb, не встречали такое случаем? Пробовал и в консоли, и через php (pdo_pgsql), и программки различные. Вот запрос:
ERROR: type «jsonb» does not exist
Версия: psql (9.4beta3, сервер 9.3.5)
Если оставляю просто json — то соответственно таблица создается. Гугл мне отказывается отвечать.
CREATE TABLE book ( id serial NOT NULL, params jsonb NOT NULL DEFAULT '{}');
ERROR: type «jsonb» does not exist
Версия: psql (9.4beta3, сервер 9.3.5)
Если оставляю просто json — то соответственно таблица создается. Гугл мне отказывается отвечать.
0
Верно ли я понял, что на данное время существуют только возможность частичной выборки из json колонок (по имени ключей, индексам, пути), но изменение (alteration), допустим удаление/изменение отдельного элемента массива — нет?
+1
Для формирования JSON из элемента, массива или записи предусмотрен ряд функций. Для установки некоторого поля в данных JSON подойдёт такая пользовательская функция:
Для операций с отдельным элементом массива можно придумать что-то аналогичное.
Скрытый текст
CREATE OR REPLACE FUNCTION fn_set_json_key ( v_data json, v_key text, v_value anyelement )
RETURNS json AS
$BODY$
SELECT coalesce
(
(
SELECT
(
'{' || string_agg ( to_json ( key ) || ':' || value, ',' ) || '}'
)
FROM
(
SELECT *
FROM json_each ( v_data )
WHERE key != v_key
UNION ALL
SELECT v_key, to_json ( v_value )
) AS fields
), '{}'
)::json;
$BODY$
LANGUAGE SQL IMMUTABLE;
Для операций с отдельным элементом массива можно придумать что-то аналогичное.
+1
Sign up to leave a comment.
PostgreSQL 9.4 Что нового?