Postgresql 检查jsonb对象在数组对象中是否具有特定值

Postgresql 检查jsonb对象在数组对象中是否具有特定值,postgresql,Postgresql,我正在尝试查找数组中具有特定值的所有行。 当前使用 select * from test where data -> 'systems' -> 0 ->> 'name' = 'Stardust' or info -> 'systems' -> 1 ->> 'name' = 'Stardust'; 系统阵列理论上可以无限长。 有没有一种方法可以说,当数组中的任何元素包含此值时,应该返回该行? JSON数据结构如下所示: { “系统”:[ {“h

我正在尝试查找数组中具有特定值的所有行。 当前使用

select * from test 
where data -> 'systems' -> 0 ->> 'name' = 'Stardust' 
or info -> 'systems' -> 1 ->> 'name' = 'Stardust';
系统阵列理论上可以无限长。 有没有一种方法可以说,当数组中的任何元素包含此值时,应该返回该行? JSON数据结构如下所示:

{
“系统”:[
{“host”:“example.com”,“name”:“Stardust”,“impact”:1},
{“host”:“example2.com”,“name”:“Milkyway”,“impact”:0}
]
}

您可以执行以下操作:

  • 如果JSON包含另一个JSON对象
  • 如果JSON数组包含字符串

  • 请参阅
    jsonb操作符
    部分,了解您可以使用的更多不同功能。

    它似乎不适合我。看看我发布的关于json结构的编辑。有什么问题吗?好的,我知道了。它应该是“[{”名字“:“星尘”}]”而不是“{”名字“:“星尘”}”。没错。让我编辑和更新相同的。我想我错过了括号。很高兴你解决了:)如果你得到了你的问题的答案,如果你认为我的答案有点帮助,那么你能把它标记为答案吗?
    select * from test where data->'systems' @> '[{"name":"Stardust"}]';
    
    select * from test where data->'systems' ? 'Stardust';