返回数组中特定对象的内容— CosmosDB [英] Return the content of a specific object in an array — CosmosDB
问题描述
这是对问题 56126817
SELECT c.EventType.EndDeviceEventDetail FROM c
WHERE c.EventType.EndDeviceEventType.eventOrAction = '93'
AND c.EventType.EndDeviceEventType.subdomain = '137'
AND c.EventType.EndDeviceEventType.domain = '26'
AND c.EventType.EndDeviceEventType.type = '3'
AND ARRAY_CONTAINS(c.EventType.EndDeviceEventDetail,{"name":
"RCDSwitchReleased","value": "true" })
我的查询输出
[
{
"EndDeviceEventDetail": [
{
"name": "Spontaneous",
"value": "true"
},
{
"name": "DetectionActive",
"value": "true"
},
{
"name": "RCDSwitchReleased",
"value": "true"
}
]
}
]
问题
如何更改查询,以便仅仅选择包含名称""DetctionActive"的数组的值"? 背后的想法是过滤一个数组条目上的查询,并获得另一个数组条目的值"作为输出.从这里阅读,应该使用UDF(在这种情况下不是最好的)和JOIN.
Question
How could change my query so that I select only the "value" of the array that contains the "name" "DetectionActive" ? The idea behind is to filter the query on one array entry and get as output the "value" of another array entry. From reading here, UDF (not the best in this case) and JOIN should be used.
SELECT t.value FROM c JOIN t in c.EventType.EndDeviceEventDetail
WHERE c.EventType.EndDeviceEventType.eventOrAction = '93'
AND c.EventType.EndDeviceEventType.subdomain = '137'
AND c.EventType.EndDeviceEventType.domain = '26'
AND c.EventType.EndDeviceEventType.type = '3'
AND ARRAY_CONTAINS(c.EventType.EndDeviceEventDetail,{"name":
"RCDSwitchReleased","value": "true" })
获取错误的请求(400)错误
Gets Bad Request (400) error
推荐答案
您的想法和方向绝对正确,我简化并测试了您的sql.
Your idea and direction is right absolutely, I simplified and tested your sql.
SELECT detail.value FROM c
join detail in c.EventType.EndDeviceEventDetail
WHERE c.EventType.EndDeviceEventType.eventOrAction = '93'
AND ARRAY_CONTAINS(c.EventType.EndDeviceEventDetail,{"name":
"RCDSwitchReleased","value": "true" })
发现如下错误消息:
因为value
是cosmos db sql语法中的保留字,所以请参考这种情况:
It because that the value
is the reserved word in cosmos db sql syntax,please refer to this case:Using reserved word field name in DocumentDB
您可以尝试修改sql,如下所示:
You could try to modify the sql like:
SELECT detail["value"] FROM c
这篇关于返回数组中特定对象的内容— CosmosDB的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!