Fiware Orion:如何根据属性值删除实体

Fiware Orion: how to delete entities based on attribute values

我在 Orion 上下文代理中有许多实体,例如以下实体。 user_id属性用于区分不同用户生成的实体

{
    "_id": {
        "id": "customCommands",
        "type": "Command",
        "servicePath": "/"
    },
    "attrNames": ["command", "user_id"],
    "attrs": {
        "command": {
            "type": "string",
            "creDate": 1455195329,
            "modDate": 1455195329,
            "value": "RASPBERRY_ID"
        },
        "user_id": {
            "type": "string",
            "creDate": 1455195329,
            "modDate": 1455195329,
            "value": "e260d1c6-f39e-4257-9f3e-91a82b281772"
        }
    },
    "creDate": 1455195329,
    "modDate": 1455195329
}

我想根据 user_id 属性的值删除一些这样的实体。我尝试使用如下过滤功能(restriction 元素)来指定希望删除其实体的用户。 json 发布到 http://my_ip:my_port/v1/updateContext/,我指定了以下 headers:接受:application/jsonContent-Type: application/json

{
    "contextElements": [{
        "type": "Command",
        "id": "customCommands"
    }],
    "restriction": {
        "scopes": [{
            "type": "FIWARE::StringQuery",
            "value": "user_id==e260d1c6-f39e-4257-9f3e-91a82b281772"
        }]
    },
    "updateAction": "DELETE"
}

但是,我收到以下错误。

{
    "errorCode": {
        "code": "400",
        "reasonPhrase": "Bad Request",
        "details": "JSON Parse Error: unknown field: /restriction"
    }
}

我是不是做错了什么,或者限制对删除实体不起作用?如果是这样,我该怎么办?

restriction 元素只能在 queryContext 中使用。因此,在 updateContext 中使用它是不允许的,这解释了您收到的错误消息。

但是,一个简单的解决方法是分两步进行。首先,使用 queryContextrestriction 来删除所有实体。然后,您可以对所有这些实体执行 updateContext,并将 updateAction 设置为 DELETE