从表中选择jsonb数组具有特定属性的元素

时间:2018-01-05 14:14:46

标签: postgresql jsonb

如何在具有包含特定属性的元素的jsonb数组的表中选择行?

例如:如果jsonb是以下

{ "list" : [
     {"name": "John", "money": 100},  
     {"name": "Dan", "money": 900}
  ]
} 

如何选择至少包含一个名称为' Dan'在阵列? 我尝试过:

select jsonb_pretty(data) from table where data -> 'list' @>  '{"name": "Dan"}';

但是id不会返回任何行。

1 个答案:

答案 0 :(得分:1)

这里的关键是JSONB值(在列中)需要匹配过滤器:

SELECT jsonb_pretty(data)
FROM table
WHERE data -> 'list' @> '[{"name": "Dan"}]'

请注意[]过滤器周围的[{"name": "Dan"}]

PostgreSQL JSON / JSONB函数和运算符documentation以供进一步参考。