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

jua*_*984 5 fiware-orion fiware

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

非常感谢你提前

fga*_*lan 3

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

GET /v2/entities?q=<query_string>
Run Code Online (Sandbox Code Playgroud)

其中指定NGSIv2 规范文档query_string中定义的查询字符串。例如,要获取小于 24、范围在 75 到 90 之间且“正在运行”的所有实体,请使用以下操作:temperaturehumiditystatus

GET /v2/entities?q=temperature<24;humidity==75..90;status=running
Run Code Online (Sandbox Code Playgroud)

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

 POST /v1/queryContext

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

以下链接提供了更多信息。

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