Приложение
Язык запросов
Запросы используются в следующих местах:
Во время экспорта
Во время работы с дашбордами
При использовании расширенного поиска
При использовании 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: null
IS NULLOP_not: true
IS 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
могут использоваться чтобы задать сложные вложенные запросы