在Orion Context Broker 0.23.0中按属性值过滤

时间:2015-08-12 07:28:35

标签: fiware fiware-orion

在当前版本的Orion Context Broker,0.23.0中,新增功能之一是它支持根据属性值(NGSI v2)过滤实体。我正在执行GET操作,如http://telefonicaid.github.io/fiware-orion/api/v2/中所示,我获得的是整个实体集,没有过滤操作。有关如何使用新的REST API,NGSI v2的明确示例,请您帮我解决这个问题吗?

非常感谢您提前

1 个答案:

答案 0 :(得分:3)

NGSIv2过滤功能基于以下操作:

GET /v2/entities?q=<query_string>

其中query_string指定NGSIv2 specification document中定义的查询字符串。例如,要获取temperature小于24,humidity介于75和90之间以及status“正在运行”的所有实体,请使用以下操作: / p>

GET /v2/entities?q=temperature<24;humidity==75..90;status=running

您还可以使用scope有效负载中的POST /v1/queryContext字段,使用“传统”NGSIv1进行查询。相同的查询将按以下方式完成:

 POST /v1/queryContext

 {
  "entities": [
      {
      "type": "",
      "isPattern": "true",
      "id": ".*"
      }
  ],
  "restriction": {
      "scopes": [
        {
          "type": "FIWARE::StringQuery",
          "value": "q=temperature<24;humidity==75..90;status=running"
        }
      ]
    }
 }

following link提供了其他信息。

请注意,某些过滤器(例如,大于/小于,范围等)假定属性值本机类型是数字。考虑到创建/更新属性的NGISv1操作总是将值转换为字符串(由于XML兼容性,不再在NGSIv2中保留)。因此,如果您需要将属性值存储为数字以应用更大/更小,范围等过滤器,则使用NGSIv2操作来创建/更新这些属性。警告在the following piece of documentation中有更详细的解释。