我有一个Car.__init__
模型,其中有一个Artist
jsonb列,其数据如下:
genres
我想做的是扫描所有艺术家记录,并生成每个艺术家所有独特流派的单一列表。
这将在10-20k位艺术家中完成,每个艺术家都有一到几十种类型的组合。
最终只是寻找一个数组作为输出。
如果有用,我正在运行Rails 5.2.3和Ruby 2.6.1。
答案 0 :(得分:2)
因此,您将必须将该列展开为值(作为子查询),然后从那里选择不同的值。 我对此并不十分熟悉,但可能类似于
Artist.distinct
.from("SELECT jsonb_array_elements_text(genres) AS genre FROM artists")
.pluck(:genre)
这将导致以下查询产生Array
SELECT DISTINCT
genre
FROM
(SELECT jsonb_array_elements_text(genres) AS genre FROM artists) subquery
根据我对PostgreSQL Docs的理解,这应该起作用。