【发布时间】:2019-06-23 13:32:03
【问题描述】:
我的 postgresql 数据库表中有一个名为 authors 的 jsonb 列,其中包含如下数据:
[{"id":134,"nameKey":"smith, john"},
{"id":112,"nameKey":"bats, billy"}]
如何从表中返回 jsonb 作者列包含 id 为 112 的作者的所有行?
我需要类似的东西
select * from record
where authors -> id = 2
我还需要得到名字:
select * from gardner_record
where authors -> nameKey like '%john%'
我发现几乎无法理解 postgresql jsonb 文档。当我尝试按 ID 选择时,它说我缺少演员表。当我尝试按名称选择时,它说该列不存在。
我应该如何查询此列?
【问题讨论】:
-
是jsonb中的数组还是jsonb[]类型?
-
它原本是文本列,但我想查询它,所以我将类型更改为 jsonb。我应该设置类型 jsonb[] 吗?我是 jsonb 的新手,没有找到任何合适的教程
-
不,没关系。我认为您必须使用遏制运算符。
@> -
SELECT * FROM record where authors <@ '{"id": 1}'::jsonb运行没有错误,但不返回任何结果。我认为这是一个对象,但我有一个对象数组,但我不知道如何修改它。我想我需要使用json_array_elements,但我不知道如何使用。
标签: postgresql