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