【问题标题】:Ruby Rails, JSON - match results if key existsRuby Rails,JSON - 如果键存在则匹配结果
【发布时间】:2015-08-15 21:09:15
【问题描述】:

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

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

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

【问题讨论】:

    标签: ruby-on-rails json postgresql


    【解决方案1】:

    试试这个:

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

    【讨论】:

    【解决方案2】:

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

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

    查询 JSON 对象的基本键操作符:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-06
      • 1970-01-01
      相关资源
      最近更新 更多