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