Я работаю над Play!проект (в Scala), для которого я использую slick.
У меня возникла проблема при попытке отфильтровать запрос к столбцу jsonb, который содержит несколько массивов.
Например, мой столбец конфигурациисодержит следующий json:
{
test1: {
...
},
test2: [
{
id: ...,
bool: false
},
{
id: ...,
bool: true
}
]
}
Я хочу запросить эту таблицу и выбрать каждую строку, для которой хотя бы один из элементов test2 имеет значение bool: true.(у нас может быть около 10 элементов в test2).
Я могу попробовать каждый элемент test2 1 на 1:
baseQuery.filter(a => a.config+>'test2'~>0+>>'bool' === "true" ||
a.config+>'test2'~>1+>>'bool' === "true" ||
...
)
Но это, очевидно, не хорошее решение.
Я пытался перейти с:
baseQuery.filter(a => (a.config+>'test2').arrayElements[JsArray].value...
)
Но у Rep [JsArray] нет метода значения.Я также пытался использовать
arrayElements[Seq[JsValue]]
Но я получаю Rep [Seq [JsValue]], на котором я не могу отобразить / flatMap / Существует /...
Это должно остатьсяЗапрос, а не DBIOAction, поэтому мне не нужно переформатировать много кода ...
Спасибо всем за ваши решения / идеи!