Задать вопрос
dushu_pitona
@dushu_pitona

На основании чего PostgreSQL сортирует данные в JSONField?

Входящие: удалено модератором
После сохранения: удалено модератором
По каким параметрам идет сортировка, и можно ли их самому задать или убрать ?
  • Вопрос задан
  • 204 просмотра
Подписаться 1 Простой 2 комментария
Решения вопроса 2
fzfx
@fzfx
18,5 дм
в PostgreSQL строка типа jsonb будет хранить ключи, отсортированные в лексикографическом порядке, что вы и демонстрируете.
если хотите сохранить порядок, который был при вставке - используйте тип json. но в этом случае формат хранения отличен от jsonb (по факту более приближен к text, насколько я знаю), и для операций, доступных только для jsonb (если таковые есть) придётся кастовать json в jsonb.
Ответ написан
Комментировать
@Akina
Сетевой и системный админ, SQL-программист.
С точки зрения Постгресса JSON - это текст. И никакой сортировки там не наблюдается. Что положил, то и обратно получил. Что, кстати, позволяет хранить в поле данного типа не соответствующие стандарту значения с дубликатами имён свойств (см. fiddle, последнюю запись).
Вот JSONB - это уже бинарная строка во внутреннем формализованном формате. И такое кодирование предусматривает в том числе сортировку по ключам в лексикографическом порядке как бинарной строки (binary collation).
fiddle
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
rozhnev
@rozhnev
Fullstack programmer, DBA, медленно, дорого
Тип JSON в принципе не поддерживает сортировки.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы