如何接受jsonb路径中的任意键?

问题描述 投票:0回答:1

我有一个

jsonb
保存在 PostgreSQL 数据库中,其结构如下:

{
  "foo": {
    "key0": {
      "bar": "myValueA",
    },
    "key1": {
      "bar": "myValueB",
    }
    // ...
    "keyN": {
      "bar": "myValueN",
    }
  }
}

我想获取所有路径中包含文本

"myValueX"
的所有记录
'foo' > ANY_KEY > 'bar'

可以是

'foo' > 'key0' > 'bar'
'foo' > 'key1' > 'bar'
或任何
keyN

“伪” PostgreSQL 中:

SELECT * FROM "myTable" WHERE "myColumn" #>> '{foo,*,bar}' = 'myValue';

其中

*
表示 “可以是任何键”

有没有办法实现这样的查询?

postgresql jsonb jsonpath json-path-expression
1个回答
1
投票

这不是伪 PostgreSQL,它只是 PostgreSQL JSONPath

@@
运算符 的工作原理与此完全相同:演示

select * from "myTable" 
where "myColumn" @@ '$.foo.*.bar=="myValueN"';
我的专栏
{“foo”:{“key0”:{“bar”:“myValueA”},“key1”:{“bar”:“myValueB”},“keyN”:{“bar”:“myValueN”}}}
© www.soinside.com 2019 - 2024. All rights reserved.