[英]Storing JSON objects in the postgreSQL using parameterized query
[英]object of objects query using postgresql
我正在使用 postgresql
在配置文件 model 中有一个字段(进度),它是一个 object 并且在这个 object 中有多个对象
每个object有2个号码
我想检查这 2 个数字是否等于做加分
progress : {
"progress1": {
"mustWin": 1,
"progress": 0
},
"progress2": {
"mustWin": 1,
"progress": 0
},
}
这是进度的默认值
我怎样才能访问 progress1 和 2
如果你想手动获取 progress1 和 progress2 值,那么使用这个:
with tb as (
select
'{"progress" : {
"progress1": {
"mustWin": 1,
"progress": 0
},
"progress2": {
"mustWin": 1,
"progress": 0
}
}}'::jsonb as js
)
select
tb.js->'progress'->'progress1',
tb.js->'progress'->'progress2'
from tb
-- Result:
|progress1 |progress2 |
|-----------------------------+-----------------------------+
|{"mustWin": 1, "progress": 0}|{"mustWin": 1, "progress": 0}|
如果你不知道有多少对象有内部进度,那么使用这个:
with tb as (
select
'{"progress" : {
"progress1": {
"mustWin": 1,
"progress": 0
},
"progress2": {
"mustWin": 1,
"progress": 0
},
"progress3": {
"mustWin": 1,
"progress": 0
},
"progress4": {
"mustWin": 1,
"progress": 0
}
}}'::jsonb as js
)
select tb2."key", tb2."value" from tb tb1
cross join jsonb_each_text(tb1.js->'progress') tb2
-- Result:
| key | value |
|-----------|-------------------------------|
| progress1 | {"mustWin": 1, "progress": 0} |
| progress2 | {"mustWin": 1, "progress": 0} |
| progress3 | {"mustWin": 1, "progress": 0} |
| progress4 | {"mustWin": 1, "progress": 0} |
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.