gpt4 book ai didi

arrays - 在 Postgres jsonb 列中查询数组对象

转载 作者:行者123 更新时间:2023-11-29 13:11:27 25 4
gpt4 key购买 nike

我有一个包含 2 列“节点”和“时间戳”的 Postgres 表。“节点”列的类型为 jsonb 并且是以下格式的对象数组:

[
{
"addr": {},
"node_number": "1",
"primary": false
},
{
"addr": {},
"node_number": "2",
"primary": true
},
]

我想在此数组中找到最近一行中具有 "primary":true 的对象。如果上面是最新的一行,结果应该是:

{
"addr": { },
"node_number": "2",
"primary": true
}

我试过:

SELECT(nodes -> 0) FROM table WHERE nodes @> '[{"primary": true}]'
order by timestamp desc
limit 1;

它给出数组中索引 0 处的对象,而不是具有 "primary": true 的所需对象。

如何实现查询?

最佳答案

使用jsonb_array_elements()在横向连接中:

select elem
from my_table
cross join jsonb_array_elements(nodes) as elem
where (elem->>'primary')::boolean

elem
---------------------------------------------------
{"addr": {}, "primary": true, "node_number": "2"}
(1 row)

关于arrays - 在 Postgres jsonb 列中查询数组对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54082024/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com