Postgres从jsonb数组中获取值匹配的所有元素

Gh05d

我想我正在尝试一些简单的方法,但是下班后我无法正常工作。我有一个包含标签列的表,它是一个jsonb数组,看起来像这样:

{"{\"name\": \"e-commerce\", \"weight\": 400}","{\"name\": \"management\", \"weight\": 200}","{\"name\": \"content management\", \"weight\": 200}"}

现在,我想编写一个查询,当名称与搜索字符串匹配时,该查询将完整的对象返回给我。到目前为止,我想到了这个:

SELECT * FROM data
WHERE tags is not null
  AND EXISTS(
        SELECT FROM data ad WHERE (ad.tags -> 'name' ->> 'education')::text
    );

但是我得到这个错误:

[42883] ERROR: operator does not exist: jsonb[] -> unknown Hint: No operator matches the given name and argument type(s). You might need to add explicit type casts.

我不确定应该在哪里进行类型转换以及这是否真的是问题。

我已经从这些 线程尝试了解决方案,但无济于事:-(

专线小巴

如果要将每个匹配的对象放在单独的行上,则可以用于jsonb_array_elements()取消嵌套对象数组的嵌套,然后进行过滤:

select o.obj
from data d
cross join lateral jsonb_array_elements(d.tags) o(obj)
where o.obj ->> 'name' = 'education'

在您具有JSONB数组的情况下有效(因此data的数据类型为jsonb)。

另一方面,如果您有一个json对象数组(so:)jsonb[],则可以unnest改为:

select o.obj
from data d
cross join lateral unnest(d.tags) o(obj)
where o.obj ->> 'name' = 'education'

请注意,当两个对象在同一数组中匹配时,这将生成两行。如果只需要一行,则可以使用exists

select o.obj
from data d
where exists (
    select 1 from unnest(d.tags) o(obj) where o.obj ->> 'name' = 'education'
)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Postgresql:如何从 JSONB 数组中获取值?

来自分类Dev

从数组中删除所有匹配的元素

来自分类Dev

从php文件中的所有数组var获取值

来自分类Dev

获取数组中的所有元素(JavaScript)

来自分类Dev

Postgres-从jsonb数组中删除元素

来自分类Dev

postgres从jsonb数组中删除特定元素

来自分类Dev

使用 postgres 从 jsonb 数组中删除元素

来自分类Dev

获取值为true的PostgreSQL表中jsonb对象的所有键

来自分类Dev

通过匹配值从数组中获取值

来自分类Dev

从表中获取与数组中的值匹配的所有值?

来自分类Dev

在数组中查找所有匹配的元素-Java

来自分类Dev

如何匹配谷歌表中数组的所有元素

来自分类Dev

SQL:匹配数组中的所有元素

来自分类Dev

MongoDB:从单个文档中查找所有匹配的数组元素

来自分类Dev

从category和subcategories数组获取数组中的所有元素

来自分类Dev

从category和subcategories数组获取数组中的所有元素

来自分类Dev

仅获取与测试数组的所有元素匹配的那些数组元素?

来自分类Dev

在 JSONB 列中查找与哈希数组中的列表不匹配的所有值

来自分类Dev

如何在Mongodb中仅包含日期的数组中获取与时间段内条件匹配的所有元素

来自分类Dev

获取C++中多维数组元素的所有组合

来自分类Dev

如何在 Ruby 中获取数组元素的所有组合?

来自分类Dev

返回对象数组的所有匹配元素?

来自分类Dev

从具有两个元素的数组中获取与匹配元素不匹配的值

来自分类Dev

获取所有匹配元素的数据属性?

来自分类Dev

如何使用 JavaScript 从二维数组的行中获取值的所有组合?

来自分类Dev

在Postgres JSONB列中查询多个数组元素

来自分类Dev

Ruby:从2D数组中收集具有匹配元素的所有数组

来自分类Dev

从数组中获取值

来自分类Dev

从数组中获取值

Related 相关文章

  1. 1

    Postgresql:如何从 JSONB 数组中获取值?

  2. 2

    从数组中删除所有匹配的元素

  3. 3

    从php文件中的所有数组var获取值

  4. 4

    获取数组中的所有元素(JavaScript)

  5. 5

    Postgres-从jsonb数组中删除元素

  6. 6

    postgres从jsonb数组中删除特定元素

  7. 7

    使用 postgres 从 jsonb 数组中删除元素

  8. 8

    获取值为true的PostgreSQL表中jsonb对象的所有键

  9. 9

    通过匹配值从数组中获取值

  10. 10

    从表中获取与数组中的值匹配的所有值?

  11. 11

    在数组中查找所有匹配的元素-Java

  12. 12

    如何匹配谷歌表中数组的所有元素

  13. 13

    SQL:匹配数组中的所有元素

  14. 14

    MongoDB:从单个文档中查找所有匹配的数组元素

  15. 15

    从category和subcategories数组获取数组中的所有元素

  16. 16

    从category和subcategories数组获取数组中的所有元素

  17. 17

    仅获取与测试数组的所有元素匹配的那些数组元素?

  18. 18

    在 JSONB 列中查找与哈希数组中的列表不匹配的所有值

  19. 19

    如何在Mongodb中仅包含日期的数组中获取与时间段内条件匹配的所有元素

  20. 20

    获取C++中多维数组元素的所有组合

  21. 21

    如何在 Ruby 中获取数组元素的所有组合?

  22. 22

    返回对象数组的所有匹配元素?

  23. 23

    从具有两个元素的数组中获取与匹配元素不匹配的值

  24. 24

    获取所有匹配元素的数据属性?

  25. 25

    如何使用 JavaScript 从二维数组的行中获取值的所有组合?

  26. 26

    在Postgres JSONB列中查询多个数组元素

  27. 27

    Ruby:从2D数组中收集具有匹配元素的所有数组

  28. 28

    从数组中获取值

  29. 29

    从数组中获取值

热门标签

归档