我的桌子看起来像这样:
CREATE TABLE myjsontable(data JSONB NOT NULL);
INSERT INTO myjsontable VALUES ('[{"score":20 ,"category": 10 }, {"score":100 ,"category": 100 },{"score":500 ,"category": 50 }]');
INSERT INTO myjsontable VALUES ('[{"score":1000 ,"category": 40 }, {"score":30 ,"category": 50 },{"score":6000 ,"category": 100 }]');
INSERT INTO myjsontable VALUES ('[{"score":10 ,"category": 1 }, {"score":123 ,"category": 40 },{"score":1000 ,"category": 50 }]');
CREATE INDEX ON myjsontable USING GIN(data);
我只想获取jsons 数组中特定 json 上具有类别 X且得分高于 Y 的记录
我设法做的就是使用这样的包含:
SELECT * FROM myjsontable WHERE data @> '[{ "category": 10}]';
我希望我可以做一些简单的查询(比如 NoSQL ..)
SELECT * FROM myjsontable WHERE data @> '[{ "category": 10, "score": ">10" }]';
当我的字段是一个 json 数组时,有什么方法可以做简单但复杂的 where 子句,例如给出的示例?