Приложение
Язык запросов
Запросы используются в следующих местах:
Во время экспорта
Во время работы с дашбордами
При использовании расширенного поиска
При использовании API
Базовый синтаксис
{"identifier": "product1"}
Это означает что необходимо найти объекты у которых идентификатор равен "product1". Вам доступны следующие поля:
identifier- Идентификатор объекта.id- внутренний идентификатор объектаtypeIdentifier- Идентификатор типа объекта.typeId- Внутненний идентификатор типа объекта.parentIdentifier- Идентификатор родительского объекта.name- Это название объекта. Для каждого языка - свое название: name.ru - для русского языка, name.en - для английского и т.д.createdAt- время создания объектаcreatedBy- кто создал объектupdatedAt- время последней модификации объектаupdatedBy- кто последний модифицировал объектvalues- текущие значения атрибутов объекта. Значение каждого атрибута хранится в свойстве с наименованием как идентификатор атрибута. То есть, если у нас есть атрибутcolorто его значение будет вvalues.color. Если же этот атрибут еще и зависит от языка, то для каждого языка будет свое значениеvalues.color.ru,values.color.enи т.д.
запрос к составным полям, таким как name.ru, values.color и т.д. выглядит так:
{"name": { "ru" : "наименование"} }
пример для значения атрибута который зависит от языка (идентификатор атрибута - description)
{"values": { "description" : { "ru" : "описание"} } }
Важно в языке запросов есть понятие оператора. в приведенных выше примерах он не присутствует, поэтому считается что используется оператор "равно" (OP_eq). Поэтому, эти же запросы можно выразить так:
{"identifier": {"OP_eq": "product1"} } // identifier = "product1"
{"name": { "ru" : {"OP_eq": "наименование"} } } // name.ru = "наименование"
{"values": { "description" : { "ru" : {"OP_eq": "описание"} } } } // values.description.ru = "описание"
Можно задать несколько условий:
{
"identifier": "product1",
"typeIdentifier": "item"
}
2
3
4
В этом случае тоже автоматически используется логический оператор "И" (OP_and). Этот запрос можно переписать как"
{
"OP_and": [
{ "identifier": "product1" },
{ "typeIdentifier": "item" }
]
}
2
3
4
5
6
Подобным же образом можно использовать и логический оператор "ИЛИ" (OP_or)
{
"OP_or": [
{ "identifier": "product1" },
{ "typeIdentifier": "item" }
]
}
2
3
4
5
6
Будут выбраны все объекты у которых идентификатор равен "product1" ИЛИ идентификатор типа равен "item"
Операторы
Вам доступны следующие операторы:
OP_eq: 3= 3OP_ne: 20!= 20OP_is: nullIS NULLOP_not: trueIS NOT TRUEOP_or: [5, 6](someAttribute = 5) OR (someAttribute = 6)
Операторы сравнения
OP_gt: 6> 6OP_gte: 6>= 6OP_lt: 10< 10OP_lte: 10<= 10OP_between: [6, 10]BETWEEN 6 AND 10OP_notBetween: [11, 15]NOT BETWEEN 11 AND 15
Другие операторы
OP_in: [1, 2]IN [1, 2]OP_notIn: [1, 2]NOT IN [1, 2]OP_like: '%hat'LIKE '%hat'OP_notLike: '%hat'NOT LIKE '%hat'OP_startsWith: 'hat'LIKE 'hat%'OP_endsWith: 'hat'LIKE '%hat'OP_substring: 'hat'LIKE '%hat%'OP_iLike: '%hat'ILIKE '%hat' (не зависит от регистра)OP_notILike: '%hat'NOT ILIKE '%hat'OP_regexp: '^[h|a|t]'REGEXP/~ '^[h|a|t]'OP_notRegexp: '^[h|a|t]'NOT REGEXP/!~ '^[h|a|t]'OP_iRegexp: '^[h|a|t]'~* '^[h|a|t]'OP_notIRegexp: '^[h|a|t]'!~* '^[h|a|t]'
Логические комбинации
Операторы OP_and, OP_or и OP_not могут использоваться чтобы задать сложные вложенные запросы