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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PostgreSQL jsonb-通过数组元素搜索字符串相关的知识,希望对你有一定的参考价值。

情况1(工作正常):我的数据库条目是一个简单的对象

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

SELECT * 
FROM employee
WHERE data ? 'john'; 

它将正确找到整个条目

案例2:我的数据库条目是一个元素数组

employee_id | data
4           | ["name":"john","city":"rio"]

我无法使用jsonb函数在任何地方查找与'john'匹配的行。充其量我可以使用WHERE data->0 ? 'john',但这不应该取决于数组条目的索引

Thx!

答案

您可以像这样使用jsonb“包含”运算符@>

... WHERE data @> '["name": "john"]'

这将找到data在顶层具有包含该条目的数组的所有行。

以上是关于PostgreSQL jsonb-通过数组元素搜索字符串的主要内容,如果未能解决你的问题,请参考以下文章

Postgresql:搜索jsonb对象数组时如何使用动态值?

PostgreSQL:仅当元素唯一时才将元素附加到 jsonb 数组

在 PostgreSQL 中的 jsonb 列中搜索 json 数组,其中数据为 json 数组

PostgreSQL:更新JSONB结构中嵌套数组中元素的属性

如何在 PostgreSQL JSONB 列中查询具有异构元素的嵌套数组

Postgresql Jsonb字段内含数组属性的删除元素操作