嵌套对象查询 - AWS IoT
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

嵌套对象查询

您可以使用嵌套 SELECT 子句来查询数组和内部 JSON 对象中的属性。SQL 版本 2016-03-23 及更高版本支持。

请考虑以下 MQTT 消息:

{ "e": [ { "n": "temperature", "u": "Cel", "t": 1234, "v": 22.5 }, { "n": "light", "u": "lm", "t": 1235, "v": 135 }, { "n": "acidity", "u": "pH", "t": 1235, "v": 7 } ] }

您可以使用以下规则将值转换为新数组。

SELECT (SELECT VALUE n FROM e) as sensors FROM 'my/topic'

该规则生成以下输出。

{ "sensors": [ "temperature", "light", "acidity" ] }

通过使用相同的 MQTT 消息,您还可以使用以下规则查询嵌套对象中的特定值。

SELECT (SELECT v FROM e WHERE n = 'temperature') as temperature FROM 'my/topic'

该规则生成以下输出。

{ "temperature": [ { "v": 22.5 } ] }

您也可以使用更复杂的规则来平展输出。

SELECT get((SELECT v FROM e WHERE n = 'temperature'), 0).v as temperature FROM 'topic'

该规则生成以下输出。

{ "temperature": 22.5 }