通过嵌套对象查询JSONB数组的PostgreSQL
我有以下数组JSON数据结构:通过嵌套对象查询JSONB数组的PostgreSQL,postgresql,jsonb,Postgresql,Jsonb,我有以下数组JSON数据结构: { arrayOfObjects: [ { "fieldA": "valueA1", "fieldB": { "fieldC": "valueC", "fieldD": "valueD" } }, { "fieldA": "valueA", "fieldB": { "fieldC": "valueC", "f
{ arrayOfObjects:
[
{
"fieldA": "valueA1",
"fieldB": { "fieldC": "valueC", "fieldD": "valueD" }
},
{
"fieldA": "valueA",
"fieldB": { "fieldC": "valueC", "fieldD": "valueD" }
}
]
}
我想选择fieldD符合我的条件(fieldC未知)的所有记录。我也看到过类似的答案,例如,但是被查询的字段是一个简单的字符串(类似于在我的示例中搜索fieldA),其中我的问题是我想基于数组中的对象中的对象进行查询
我尝试过类似于select*from myTable where jsonData->'arrayOfObjects'@>'[{“fieldB”:{“fieldD”:“valueD”}]
的方法,但这似乎不起作用
如何实现我想要的?您可以直接在JSONB字段上执行“包含”查询,并通过您要查找的最小值:
SELECT *
FROM mytable
WHERE json_data @> '{"arrayOfObjects": [{"fieldB": {"fieldD": "valueD"}}]}'::JSONB;
当然,这假设fieldD总是嵌套在fieldB下,但就模式一致性而言,这是一个相当低的标准