繁体   English   中英

如何在Postgres中的嵌套json中查询对象

[英]How to query objects in nested json in postgres

可以说我有一个名为users表,其中的jsonb列名为attrs ,其值如下:

{
  "uuid5": {
    "label": "Email",
    "value": "example@test.com.tw"
  },
  "uuid6": {
    "label": "Last Name ",
    "value": "Yang"
  }
}

这里是单线:

"attrs": { "uuid5": { "label": "Email", "value": "example@test.com.tw" }, "uuid6": { "label": "Last Name ", "value": "Yang" }

如您所见,有uniq键uuid5uuid6等。

如何获得标签=“电子邮件”和值=“ example@test.com.tw”的用户?

在有关json函数的postgres docs ,有一个名为jsonb_each函数,该函数返回JSON对象键/值对的集合。 但是我找不到基于此写查询的方法。

您需要jsonb_each遍历attrs列中的所有条目。 它将返回键/值对,其中键是uuid ,条目是您要检查的实际JSON结构。 您可以将其与EXISTS条件结合使用:

select u.*
from users u
where exists (select *
              from jsonb_each(u.attrs) as t(uid,entry)
              where t.entry ->> 'label' = 'Email'
                and t.entry ->> 'value' = 'example@test.com.tw')

在线示例: https//rextester.com/SHN95362

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM