0

在 Postgres 13.3 中,我想从一个jsonb值中提取特定长度的子数组:

select jsonb_path_query('[[0,1], [0,1,2]]'::jsonb, '$[*] ? (@.size() >= 3)');

但是,这不会返回任何内容(0 行)。

我究竟做错了什么?请注意,我想继续使用jsonpath- 虽然此示例已简化,但实际案例涉及更多,并且依赖于 jsonpath 表达式的灵活性。

4

1 回答 1

2

将同时$[*]执行数组数组中的每个元素,因此分别计算0, 1, 0, 1,2

以下是诀窍

select jsonb_path_query('[[0,1], [0,1,2]]'::jsonb, '$ ? (@.size() >= 3)');

结果

 jsonb_path_query 
------------------
 [0, 1, 2]
(1 row)
于 2021-07-01T12:40:31.653 回答