在FIWARE Orion Context Broker中过滤查询输出的最佳方法是什么,它只包含具有特定属性的结果?例如,假设有5个元素,其属性名为" A"," B"和" C"和另外15个只有" A" (所有共享相同的元素类型)。我想只收回前者5.在查询的属性字段中指定[" A"," B"," C"]并不是似乎有助于过滤掉那些没有" B"和" C"。
答案 0 :(得分:1)
答案取决于考虑的NGSI API版本。
在NGSIv1中,通常(最后一段中描述了一个例外),您只能在queryContext operation的attributes
字段中使用“正”过滤器,即包含A,B的所有实体或C,但不包括A,但不包括B或C的实体。
在NGSIv2中,您可以使用简单查询语言的以下功能(选中NGSIv2 specification):
一元否定语句使用一元运算符!而肯定的一元语句根本不使用运算符。一元语句用于检查属性是否存在。例如。 temperature匹配具有名为'temperature'属性的实体(无论其值),而!temperature匹配没有温度属性的实体。
例如,要获取具有属性A但不是B或C的所有实体,将使用以下内容:
GET /v2/entities?q=A;!B;!C
实际上,您也可以通过String query filter在NGSIv1中使用q
过滤器。