如何在具有包含特定属性的元素的jsonb数组的表中选择行?
例如:如果jsonb是以下
{ "list" : [
{"name": "John", "money": 100},
{"name": "Dan", "money": 900}
]
}
如何选择至少包含一个名称为' Dan'在阵列? 我尝试过:
select jsonb_pretty(data) from table where data -> 'list' @> '{"name": "Dan"}';
但是id不会返回任何行。
答案 0 :(得分:1)
这里的关键是JSONB值(在列中)需要匹配过滤器:
SELECT jsonb_pretty(data)
FROM table
WHERE data -> 'list' @> '[{"name": "Dan"}]'
请注意[]
过滤器周围的[{"name": "Dan"}]
。
PostgreSQL JSON / JSONB函数和运算符documentation以供进一步参考。