簡體   English   中英

object 的對象查詢使用 postgresql

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM