As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Você pode usar as seguintes extensões para a sintaxe SQL padrão ANSI para facilitar o trabalho com objetos JSON aninhados.
Operador "."
Esse operador acessa membros em objetos JSON incorporados e funciona de forma idêntica ao ANSI SQL e. JavaScript Por exemplo:
SELECT foo.bar AS bar.baz FROM 'topic/subtopic'
seleciona o valor da propriedade bar
no objeto foo
a partir da seguinte carga útil de mensagem enviada ao tópico topic/subtopic
.
{
"foo": {
"bar": "RED",
"bar1": "GREEN",
"bar2": "BLUE"
}
}
Se o nome de uma propriedade JSON incluir um caractere de hífen ou caracteres numéricos, a notação 'ponto' não funcionará. Em vez disso, você deve usar a função get para extrair o valor da propriedade.
Neste exemplo, a mensagem a seguir é enviada ao tópico iot/rules
.
{
"mydata": {
"item2": {
"0": {
"my-key": "myValue"
}
}
}
}
Normalmente, o valor de my-key
seria identificado como nessa consulta.
SELECT * from iot/rules WHERE mydata.item2.0.my-key= "myValue"
No entanto, como o nome da propriedade my-key
contém um hífen e item2
contém um caractere numérico, a função get deve ser usada conforme mostra a consulta a seguir.
SELECT * from 'iot/rules' WHERE get(get(get(mydata,"item2"),"0"),"my-key") = "myValue"
*
Operador
Funciona da mesma maneira que o caractere curinga *
em SQL padrão ANSI. É usado somente na cláusula SELECT e cria outro objeto JSON contendo os dados da mensagem. Se a carga útil da mensagem não estiver no formato JSON, *
gerará toda a carga útil da mensagem como bytes brutos. Por exemplo:
SELECT * FROM 'topic/subtopic'
Como aplicar uma função a um valor de atributo
Veja a seguir um exemplo de carga útil JSON que pode ser publicada por um dispositivo:
{
"deviceid" : "iot123",
"temp" : 54.98,
"humidity" : 32.43,
"coords" : {
"latitude" : 47.615694,
"longitude" : -122.3359976
}
}
O exemplo a seguir aplica uma função a um valor de atributo em uma carga útil JSON:
SELECT temp, md5(deviceid) AS hashed_id FROM topic/#
O resultado dessa consulta é o seguinte objeto JSON:
{
"temp": 54.98,
"hashed_id": "e37f81fb397e595c4aeb5645b8cbbbd1"
}