如何在具有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以供进一步参考。

09-18 12:44