通过嵌套对象查询JSONB数组的PostgreSQL

通过嵌套对象查询JSONB数组的PostgreSQL,postgresql,jsonb,Postgresql,Jsonb,我有以下数组JSON数据结构: { arrayOfObjects: [ { "fieldA": "valueA1", "fieldB": { "fieldC": "valueC", "fieldD": "valueD" } }, { "fieldA": "valueA", "fieldB": { "fieldC": "valueC", "f

我有以下数组JSON数据结构:

{ 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下,但就模式一致性而言,这是一个相当低的标准