根据official documentation of Orion Context Broker NGSIv2:
您可以在条件中包含过滤表达式 . 例如,不仅要通知压力是否有变化,而且是否在700-800范围内变化 . 这是一个高级主题,请参阅NGSIv2规范中的“订阅”部分 .
在NGSIv2订阅中没有 notifyConditions
,例如NGSIv1,它被subject.condition对象取代:
condition:触发通知的条件 . 此字段是可选的,它可能包含两个属性,两个都是可选的:attrs:属性名称数组表达式:由q,mq,georel,geometry和coords组成的表达式(请参阅上面关于此字段的“List entities”操作)
当我们使用 subject.condition.attrs
时,它包含一个属性名称数组,这些名称定义"triggering attributes",即由于实体创建或更新而在创建/更改时触发通知的属性 .
但是,对于 subject.condition.expression
,官方文件中没有例子 .
获取拼图可以推断:
-
可以组合
subject.condition.expression
和subject.condition.attrs
. 如果我设置和表达不同的表达式,例如 . attr foo用表达式'boo>10'它会做什么?这会表现得像OR
或AND
吗? -
可以设置多个表达式 . 这会像
OR
或AND
吗?
将这些更复杂的订阅的一些示例与订阅中的实体分隔的不同方式相结合将会很不错 .
NOTE: 此问题与Orion Version 1.7.0有关
1 回答
我认为以下示例,来自NGSIv2 Overview for Developers That Already Know NGSIv1演示文稿(当前版本中的幻灯片34)可能有助于澄清 .
请求:
如此示例所示,您可以使用不同的条件(
q
,mq
,geoquery等),它们在AND意义上进行解释 . Morevoer,q
和mq
允许在AND意义上解释的复杂表达式,例如:请注意,
q
和mq
出现在订阅expression
时遵循的规则与它们出现在同步查询中的规则相同(即GET /v2/entities?q=...
) . 这些规则在NGSIv2 specification的"Simple Query Language"部分中描述 .