如何在json数据上编写postgres查询以检查特定条件
我正在开发一个使用postgres数据库的房地产应用程序。我需要在json字段中查询特定的条件,但我不知道该怎么做 json数据存储在一个名为“conditions”的列中。例如,买方可能具有以下条件:如何在json数据上编写postgres查询以检查特定条件,json,postgresql,Json,Postgresql,我正在开发一个使用postgres数据库的房地产应用程序。我需要在json字段中查询特定的条件,但我不知道该怎么做 json数据存储在一个名为“conditions”的列中。例如,买方可能具有以下条件: { "subject to financing": {"date": "2020-05-30", "time": "2100", "done": true}, "inspection": {"date": "2020-05-30", "time": "2100", "done":
{
"subject to financing": {"date": "2020-05-30", "time": "2100", "done": true},
"inspection": {"date": "2020-05-30", "time": "2100", "done": true},
"be my friend": {"date": "2020-05-30", "time": "2100", "done": true}
}
我想写一个查询,检查是否满足所有条件。在上述情况下,这意味着在所有条件中循环,并检查它们的“done”属性是否为true
如何使用json数据编写这样的查询?谢谢。如果条件不存在,您可以这样做
select t.*
from the_table t
where not exists (select *
from jsonb_each(t.conditions) as c(k,val)
where (c.val -> 'done')::boolean = false)
子查询迭代所有键/值对(外部查询中的每一行),并检查是否没有任何键/值对被设置为false。。。这似乎奏效了。如果我对它稍加改进以检测json对象中何时不存在“done”,我将如何添加它?使用
?
,而不是c.val“完成”