例如,我有一个像下面这样的人。我想查询某人的phoneNumber包含“ 354”。我将使用以下查询:GET /v2/entities?q=phoneNumber~=354
。那么有可能在orion上下文代理中进行这样的查询吗?如我所见,匹配模式仅支持target属性为字符串。
匹配模式:〜=。该值匹配给定的模式,表示为正则表达式,例如颜色〜= ow。为了使实体匹配,它必须包含目标属性(颜色),并且目标属性值必须匹配右侧的字符串,在此示例中为“ ow”(棕色和黄色会匹配,而黑色和白色不会匹配)。该操作是仅对字符串类型的目标属性有效。
[http://telefonicaid.github.io/fiware-orion/api/v2/stable/部分:简单查询语言
{
"type": "Person",
"isPattern": "false",
"id": "1",
"attributes": [
{
"name": "phoneNumber",
"type": "string",
"value": "0102354678"
}
]
}
非常感谢。
正如您所说的那样。
例如,将Orion 2.2.0与本地数据库中的空数据库一起使用:1026,创建一个与您建议的实体类似的实体(但使用NGSIv2端点,因为NGSIv1是已弃用的API):
$ curl localhost:1026/v2/entities -H 'content-type: application/json' -d @- <<EOF
{
"type": "Person",
"id": "1",
"phoneNumber": {
"type": "string",
"value": "0102354678"
}
}
EOF
然后,您可以使用“ 354”模式进行查询,您将获得实体:
$ curl -s -S 'localhost:1026/v2/entities?q=phoneNumber~=354' | python -mjson.tool
[
{
"id": "1",
"phoneNumber": {
"metadata": {},
"type": "string",
"value": "0102354678"
},
"type": "Person"
}
]
相反,如果您查询不匹配的模式(例如“ 999”),则不会获得任何实体:
$ curl -s -S 'localhost:1026/v2/entities?q=phoneNumber~=999' | python -mjson.tool
[]