【问题标题】:Rails PSQL query JSON for nested array and objects用于嵌套数组和对象的 Rails PSQL 查询 JSON
【发布时间】:2016-03-14 12:15:52
【问题描述】:

所以我有一个 json(在文本字段中),我正在使用 postgresql,我需要查询该字段,但它嵌套有点深。格式如下:

[
  {
    "name":"First Things",
    "items":[
      {
        "name":"Foo Bar Item 1",
        "price":"10.00"
      },
      {
        "name":"Foo Item 2",
        "price":"20.00"
      }
    ]
  },
  {
    "name":"Second Things",
    "items": [
      {
        "name":"Bar Item 3",
        "price":"15.00"
      }
    ]
  }
]

我需要查询name INSIDE items 节点。我尝试了一些查询但无济于事,例如: .where('this_json::JSON @> [{"items": [{"name": ?}]}]', "%#{name}%")。我该怎么去这里?

我可以查询像 this_json::JSON -> 'key' = ? 这样的普通 JSON 格式,但需要这方面的帮助。

【问题讨论】:

    标签: ruby-on-rails json postgresql psql


    【解决方案1】:

    这里你需要使用两次json_array_elements(),因为你的顶级文档包含json数组,而不是items键有子文档数组。示例psql 查询可能如下:

    SELECT
      item->>'name' AS item_name,
      item->>'price' AS item_price
    FROM t,
      json_array_elements(t.v) js_val,
      json_array_elements(js_val->'items') item;
    

    其中t - 是您的表的名称,v - 您的JSON 列的名称。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-07-23
      • 1970-01-01
      • 2013-03-18
      • 1970-01-01
      • 1970-01-01
      • 2020-03-19
      相关资源
      最近更新 更多