如何从Rails中的数千条记录创建唯一数组项列表?

时间:2019-06-20 20:02:22

标签: ruby-on-rails arrays ruby

我有一个Car.__init__模型,其中有一个Artist jsonb列,其数据如下:

genres

我想做的是扫描所有艺术家记录,并生成每个艺术家所有独特流派的单一列表。

这将在10-20k位艺术家中完成,每个艺术家都有一到几十种类型的组合。

最终只是寻找一个数组作为输出。

如果有用,我正在运行Rails 5.2.3和Ruby 2.6.1。

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的理解,这应该起作用。