psql如何select如果对象数组中的任何属性如果某个值

psql how to select if any properties in array of object if a certain value

我想 select 每一行 args.args_json.actions ==> 任何 id 到 79

{
  "args": {
    "args_json": {
      "actions": [
        {
          "id": 79
        },
        {
          "id": 47

        },
        {
          "id": 82
        }
      ]
    }
  }
}

我尝试了 args #> '{args_json,actions,0}' ->> 'id' = '79' 并且它有效但只检查索引 0。

我也想要,但是 returns 如果任何一个 id 为 79,则为真,而不仅仅是索引 0。

args #> '{args_json,actions}' @> '[{"id":79}]' ;

不需要取消引用,你可以简单地使用包含运算符 @> 和更大的 JSON:

WHERE args @> '{ "args_json": { "actions": [ { "id":79 } ] } }'