PostgreSQL jsonb-通过数组元素搜索字符串

PostgreSQL jsonb-通过数组元素搜索字符串,postgresql,jsonb,Postgresql,Jsonb,案例1(工作正常):我的db条目是一个简单的对象 employee_id | data (jsonb) 4 | {"name":"john"} SELECT * FROM employee WHERE data ? 'john'; 它将正确地找到整个条目 案例2:MyDB条目是一个元素数组 employee_id | data 4 | [{"name":"john"},{"city":"rio"}] 我无法在任何地方使用jsonb函数查找与'jo

案例1(工作正常):我的db条目是一个简单的对象

employee_id | data (jsonb)
4           | {"name":"john"}

SELECT * 
FROM employee
WHERE data ? 'john'; 
它将正确地找到整个条目

案例2:MyDB条目是一个元素数组

employee_id | data
4           | [{"name":"john"},{"city":"rio"}]
我无法在任何地方使用jsonb函数查找与
'john'
匹配的行。我最多只能使用
WHERE data->0?“john'
但这不应该取决于数组项的索引


谢谢

您可以像这样使用
jsonb
“contains”operator
@>

... WHERE data @> '[{"name": "john"}]'
这将找到
数据中的所有行
的顶层都有一个包含此项的数组。

您的“工作”示例没有找到,因为
'john'
不是键。