在jsonb中每个键具有不同的计数

时间:2018-05-28 10:57:05

标签: ruby-on-rails json jsonb

我在名为Translation的表中有值,其中包含每个示例的每个值:

=> {"fr"=>"Jaune", "de"=>"", "en"=>"", "bg"=>"", "hr"=>"", "es"=>"", "hu"=>"", "it"=>"", "lt"=>"", "lv"=>"", "nl"=>"", "pl"=>"", "pt"=>"", "ro"=>"", "cs"=>""}

我希望得到每种语言的翻译编号: 我在尝试:

Translation.where("values->>'fr' IS NOT NULL").count

但它给了我0,这是不正确的,有谁知道如何正确地做到这一点?

1 个答案:

答案 0 :(得分:1)

你遇到的问题是没有值的键仍然存在于json中,所以"不是空的"将返回所有这些因为密钥存在。你有两个选项,你可以从数据库中删除空键,所以不能为null,或者,改变它以查看键是否为空

你可以这样做

Translation.where("values->>'fr' <> ''").count

它将适用于您现在拥有的结构。