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

app*_*ver 7 postgresql json ruby-on-rails

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

LineSource.where("names -> 'away_names'")
Run Code Online (Sandbox Code Playgroud)

LineSource.where("names ->> 'away_names' = '%'")
Run Code Online (Sandbox Code Playgroud)

Nic*_*vre 12

试试这个 :

where("(names->'away_names') is not null")
Run Code Online (Sandbox Code Playgroud)


pra*_*mod 5

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

where("(names #>'{away_names}') is not null")
Run Code Online (Sandbox Code Playgroud)

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

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