Целочисленный массив JSONB содержит значение - PullRequest
1 голос
/ 19 февраля 2020

У меня есть таблица Directory, как показано ниже, со столбцом jsonb

id: 1
folder:
  {"file_ids"=>[639,12,28]},
 options:{}

id: 2
folder:
  {"file_ids"=>[28]},
options:{}

id: 3
folder:
  {"file_ids"=>[12]},
options:{}

id: 4
folder:
 "file_ids"=>[639]},
options:{}

Как мы запрашиваем все каталоги, которые содержат любой из файловых идентификаторов с 12,28, при попытке кода ниже всегда выдает ошибку?

Directory.where("directories.folder->>'file_ids' = ANY(ARRAY[?]::int[])", [12,28])

Мне нужен результат:

    id: 1
    folder:
      {"file_ids"=>[639,12,28]},
     options:{}

    id: 2
    folder:
      {"file_ids"=>[28]},
    options:{}

    id: 3
    folder:
      {"file_ids"=>[12]},
    options:{}

Есть ли другой способ запросить подробности?

1 Ответ

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

Наконец, я получил одно решение,

Я преобразовал все целочисленные значения в строку ['12', '28']

Directory.where("directories.folder->>'file_ids' ~* any (ARRAY[?])", ['28','12'])
...