我对PG的jsonb字段非常陌生。 例如,我有一个包含以下内容的jsonb字段
{
"RootModule": {
"path": [
1
],
"tags": {
"ModuleBase1": {
"value": 40640,
"humanstring": "40640"
},
"ModuleBase2": {
"value": 40200,
"humanstring": "40200"
}
},
"children": {
"RtuInfoModule": {
"path": [
1,
0
],
"tags": {
"in0": {
"value": 11172,
"humanstring": "11172"
},
"in1": {
"value": 25913,
"humanstring": "25913"
}
etc....
有没有一种方法可以查询X个级别并搜索“标签”键以查找特定的键?
比如说我想要“ModuleBase2”和“in1”,我想要获取它们的值?
基本上,我正在寻找一个查询,它将遍历jsonb字段直到找到一个键并返回值,而不必知道结构。
在Python或JS中,一个简单的循环或递归函数可以轻松地遍历json对象(或字典)直到找到一个键。
PG有没有内置函数来做到这一点?
最终我想在Django中实现这一点。
编辑: 我看到我可以做一些东西。
SELECT data.key AS key, data.value as value
FROM trending_snapshot, jsonb_each(trending_snapshot.snapshot-
>'RootModule') AS data
WHERE key = 'tags';
但我必须指定这些级别。