Arrays 如何迭代sqlite中嵌套json对象中的数组?
假设我有一个sqlite表Arrays 如何迭代sqlite中嵌套json对象中的数组?,arrays,json,sqlite,Arrays,Json,Sqlite,假设我有一个sqlite表features,其中有一列data,其中包含json对象 CREATE TABLE features(id INTEGER主键,data json) 现在,示例数据对象可能是: {"A": {"B": {"coordinates":[ {"x":1, "y":10}, {"x":10, "
features
,其中有一列data
,其中包含json对象
CREATE TABLE features(id INTEGER主键,data json)
现在,示例数据对象可能是:
{"A":
{"B":
{"coordinates":[
{"x":1, "y":10},
{"x":10, "y":2},
{"x":12, "y":12}
]
}
}
现在,坐标
数组中json对象的数量可以因行而异。一些文档可能有3个坐标(上面的示例),而其他文档可能有5个或更多坐标
对于每一行或每一文档,我希望能够只迭代x
值,并找到最小值,与y
值相同。所以这个例子的结果是x为1,y为2
我可以使用json\u each
获取数组中的所有json对象,但我不能仅为一行提取x。我试过:
select value from features, json_each(json_extract(features.data, '$.A.B.coordinates'));
但是,这似乎返回所有行的“all”coordinate
json对象。如何迭代一个文档的数组并从中提取值,以便为一个文档选择最小值或最大值?在json\u each(json\u extract())
之后再次使用json\u extract()
提取每个x
和y
并聚合:
SELECT f.id,
MIN(json_extract(value, '$.x')) x,
MIN(json_extract(value, '$.y')) y
FROM features f, json_each(json_extract(f.data, '$.A.B.coordinates'))
GROUP BY f.id
请参阅。