我有一个Rails应用程序,其中包含具有jsonb“genres”列的艺术家表的Postgres数据库。
有成千上万行数据。
每行中的genre列都有一个类似于
我想要做的是在所有行中输出JSON格式的每个流派的数量计数。
类似于:
更新...以下是我目前拥有的...
有成千上万行数据。
每行中的genre列都有一个类似于
["rock", "indie", "seen live", "alternative", "indie rock"]
的数组,其中包含不同的流派。我想要做的是在所有行中输出JSON格式的每个流派的数量计数。
类似于:
{"rock": 532, "power metal": 328, "indie": 862}
是否有一种有效的方法来实现这个目标?更新...以下是我目前拥有的...
genres = Artist.all.pluck(:genres).flatten.delete_if &:empty?
output = Hash[genres.group_by {|x| x}.map {|k,v| [k,v.count]}]
final = output.sort_by{|k,v| v}.to_h
输出结果是哈希值而不是JSON格式,这是可以接受的。
但是已经感觉相当缓慢,所以我想知道是否有更好的方法来处理它。
genre_id
分组来轻松获得所需结果。这似乎又是一个使用JSON/数组数据类型只会导致糟糕的数据库设计的案例。 - max