Посчитать различные значения поля в JSONB в дальнейшем - PullRequest
0 голосов
/ 06 апреля 2020

У меня есть таблица, похожая на:

+==========|===========+
|id        |primary key|
|----------|-----------|
|jdoc      |jsonb      |
+==========|===========+

jdoc, возможно, будет содержать поле с именем abc. Мне нужно найти различное количество значений в jdoc->'abc'. Как мне выполнить sh это с помощью sequelize?

Я попытался использовать следующее:

Entity.count({
  distinct: true,
  col: 'jdoc.abc'
})

Это не работает и выдает ошибку, что поле jdoc.abc не существует в таблице Entity.

Как правильно заставить это работать? Стоит ли использовать необработанные запросы, если для этого нет встроенной поддержки?

1 Ответ

0 голосов
/ 07 апреля 2020

Наконец-то нашел ответ. Он использует sequelize.literal в качестве входа для Entity.count.

Entity.count({
  distinct: true,
  col: sequelize.literal('jsonb_extract_path(jdoc, \'abc\')')
})
...