Cosmos DB SQL 查询数组中具有给定条件的子项
CosmosDB SQL query on child item in array with a given conditiion
我正在使用 CosmosDB,我必须处理如下所示的集合
[
{
"detected": [
{
"class": "person",
"probability": 94.24896240234375,
"centroid": {
"x": 242,
"y": 151
},
"is_tracked": false
}
]
},
{
"detected": [
{
"class": "person",
"probability": 64.25231099128723,
"centroid": {
"x": 355,
"y": 259
},
"is_tracked": true
},
{
"class": "person",
"probability": 50.44138431549072,
"centroid": {
"x": 185,
"y": 183
},
"is_tracked": true
}
]
}
]
我想编写一个 SQL 查询,允许我 select x
、y
对象中的所有 centroid
值is_tracked
设置为 true
。
原则上,我正在寻找的查询 return 类似于以下内容:
[
{
"x": 355,
"y": 259
},
{
"x": 185,
"y": 183
}
]
我已经试过了
SELECT c.detected FROM c WHERE ARRAY_CONTAINS(c.detected, {'is_tracked': true}, true)
我得到了上面发布的内容。但是,我不知道如何进一步过滤。
非常感谢任何帮助
请使用以下sql:
SELECT detect.centroid.x as x,detect.centroid.y as y FROM c
join detect in c.detected
where detect.is_tracked = true
输出:
我正在使用 CosmosDB,我必须处理如下所示的集合
[
{
"detected": [
{
"class": "person",
"probability": 94.24896240234375,
"centroid": {
"x": 242,
"y": 151
},
"is_tracked": false
}
]
},
{
"detected": [
{
"class": "person",
"probability": 64.25231099128723,
"centroid": {
"x": 355,
"y": 259
},
"is_tracked": true
},
{
"class": "person",
"probability": 50.44138431549072,
"centroid": {
"x": 185,
"y": 183
},
"is_tracked": true
}
]
}
]
我想编写一个 SQL 查询,允许我 select x
、y
对象中的所有 centroid
值is_tracked
设置为 true
。
原则上,我正在寻找的查询 return 类似于以下内容:
[
{
"x": 355,
"y": 259
},
{
"x": 185,
"y": 183
}
]
我已经试过了
SELECT c.detected FROM c WHERE ARRAY_CONTAINS(c.detected, {'is_tracked': true}, true)
我得到了上面发布的内容。但是,我不知道如何进一步过滤。
非常感谢任何帮助
请使用以下sql:
SELECT detect.centroid.x as x,detect.centroid.y as y FROM c
join detect in c.detected
where detect.is_tracked = true
输出: