要实现按子节点排序的jsonb_path_query,可以使用PostgreSQL的jsonb_path_query_array函数结合jsonb_array_elements函数来实现。
下面是一个示例代码:
SELECT jsonb_path_query_array('{
"people": [
{"name": "John", "age": 30},
{"name": "Alice", "age": 25},
{"name": "Bob", "age": 35}
]
}'::jsonb, '$.people[*]') AS result
ORDER BY (result->>'age')::int;
这个示例中,我们使用jsonb_path_query_array函数将jsonb文档中的每个人对象提取出来,然后使用jsonb_array_elements函数将它们转化为一个数组。最后,我们根据每个人对象中的年龄字段进行排序。
执行以上代码将得到以下结果:
+-------------------------------+
| result |
+-------------------------------+
| {"name": "Alice", "age": 25} |
| {"name": "John", "age": 30} |
| {"name": "Bob", "age": 35} |
+-------------------------------+
可以看到,结果按照年龄字段的值进行了排序。你可以根据自己的需求修改jsonb_path_query_array的参数和排序方式。
上一篇:按子节点的文本选择节点
下一篇:按字节分割并带有分隔符