Ruby Rails,JSON - 如果密钥存在,则匹配结果

时间:2015-08-15 21:09:16

标签: ruby-on-rails json postgresql

在postgres数据库中,设置是ruby on rails。该表称为line_sources,JSON列称为names。我想返回names列包含名为away_names的键的所有行。我正在尝试这个,但他们失败了:

LineSource.where("names -> 'away_names'")

LineSource.where("names ->> 'away_names' = '%'")

2 个答案:

答案 0 :(得分:10)

试试这个:

where("(names->'away_names') is not null")

答案 1 :(得分:2)

您可以使用#>在该路径上获取JSON对象。

where("(names #>'{away_names}') is not null")

查询JSON对象的基本键运算符:

  • #>:获取该路径的JSON对象
  • ->>:以文本
  • 的形式获取该路径的JSON对象
  • {obj, n}:获取该对象中的第n个项目