Фильтровать по значению атрибута в Orion Context Broker 0.23.0
В текущей версии Orion Context Broker, 0.23.0, одной из новых добавленных функций является то, что он поддерживает фильтрацию объектов в соответствии со значениями атрибутов (NGSI v2). В настоящее время я выполняю операции GET, как указано в http://telefonicaid.github.io/fiware-orion/api/v2/ и я получаю весь набор объектов, без действия фильтрации. Не могли бы вы помочь мне в этом отношении наглядным примером использования нового REST API NGSI v2?
заранее большое спасибо
1 ответ
Возможности фильтрации NGSIv2 основаны на следующей операции:
GET /v2/entities?q=<query_string>
где query_string
задает строку запроса, как определено в документе спецификации NGSIv2. Например, чтобы получить все объекты, которые temperature
меньше 24, что humidity
находится в диапазоне от 75 до 90 и который status
"работает", используйте следующую операцию:
GET /v2/entities?q=temperature<24;humidity==75..90;status=running
Вы также можете выполнять запросы, используя "традиционный" NGSIv1, используя scope
поле в 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"
}
]
}
}
Следующая ссылка предоставляет дополнительную информацию.
Обратите внимание, что некоторые фильтры (например, больше / меньше, диапазоны и т. Д.) Предполагают, что значение атрибута native-тип является числом. Учтите, что операции NGISv1 для создания / обновления атрибутов всегда преобразуют значения в строки (из-за совместимости с XML, более не поддерживаемой в NGSIv2). Таким образом, если вам нужно сохранить значения атрибутов в виде числа, чтобы применить фильтры "больше / меньше", "диапазоны" и т. Д., То используйте операции NGSIv2 для создания / обновления этих атрибутов. Предупреждение поясняется более подробно в следующем фрагменте документации.