本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
嵌套对象查询
您可以使用嵌套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 }