【发布时间】:2021-08-21 04:40:47
【问题描述】:
假设我有一个 sqlite 表 features,其中有一列 data 包含 json 对象。
CREATE TABLE features ( id INTEGER PRIMARY KEY, data json )
现在,一个示例数据对象可能是:
{"A":
{"B":
{"coordinates":[
{"x":1, "y":10},
{"x":10, "y":2},
{"x":12, "y":12}
]
}
}
现在coordinates 数组中的 json 对象的数量可以因行而异。一些文档可以有 3 个坐标(上例),而其他文档可能有 5 个或更多坐标。
对于每一行或文档,我希望能够仅迭代 x 值并找到最小值,y 值相同。因此,该示例的结果将是 x 为 1,y 为 2。
我可以使用 json_each 获取数组中的所有 json 对象,但我不能仅提取一行的 x。我试过了:
select value from features, json_each(json_extract(features.data, '$.A.B.coordinates'));
但是,这似乎为所有行返回“全部”coordinate json 对象。如何迭代一个文档的数组并从中提取值,然后我可以为一个文档选择最小值或最大值?
【问题讨论】: