Postgres jsonb индексный формат - PullRequest
       7

Postgres jsonb индексный формат

1 голос
/ 17 февраля 2020

Я пытаюсь найти имя для этих типов индексов. Я посмотрел на Google и документацию Postgres, и они ничего не знают о том, что делает оператор Value->. И чем он отличается от обычного: -> SomeInt.

CREATE INDEX "someIndex" ON "me-db"."someTable" USING btree ((((jsondata -> 'SomeInt'::text) -> 'HasValue'::text)))
CREATE INDEX "someIndex2" ON "me-db"."someTable" USING btree ((((jsondata -> 'SomeInt'::text) -> 'Value'::text)))

Как называются операторы ->HasValue и ->Value? Чем ->Value отличается от ->Field.

Ответы [ 2 ]

1 голос
/ 17 февраля 2020

Это ключевые имена в вашей json структуре. Если вы заключаете одно в другое, это означает, что у вас есть вложенный json такой (для вышеприведенных строк):

{"SomeInt": {"HasValue": 1, "Value": 2}}

0 голосов
/ 17 февраля 2020

Это так называемые экспрессивные или (чаще, но менее правильные) функциональные индексы.

Вы не используете ->Value, вы используете ->'Value'. Это разные вещи. Первый будет искать столбец с именем «value» и использовать его содержимое в качестве имени ключа для поиска. Второй использует буквенную строку «Значение» в качестве имени ключа для поиска.

...