Rails postgres hstore: запрос определенного ключа с любым из заданных значений

Мой вопрос относится к типу данных rails + postgres hstore.

WHERE IN [1,2, 3] или эквивалент Model.where(data: [1,2,3]) для рельсов отлично работает для обычных столбцов, но не для hstore.

У меня есть столбец hstore (скажем, info), и я хочу запросить строки, которые имеют определенный ключ и любое из заданных значений.

Например: чтобы найти все книги, у которых ключ «автор» и значение «ABC» в столбце hstore, отлично работает следующий запрос:

Book.where("info @> hstore(:key, :value)", key: "author", value: "ABC")

Но мне нужен запрос, который возвращает записи, которые имеют ключ как «автор» и любое из значений в [«ABC», «XYZ», «PQRS», «DFG»].

Какие-либо предложения?


person ranjan    schedule 21.06.2016    source источник


Ответы (1)


Возможно, попробуйте:

Book.where("(info -> :key) IN (:values)", key: 'author', values: ['ABC', 'XYZ'])

Тем не менее, @> поддерживает индексы, в то время как он не будет использовать никаких индексов.

person lmz    schedule 21.06.2016
comment
Спасибо. Это сработало, но без какой-либо поддержки индекса, как вы сказали. - person ranjan; 06.07.2016