Функции извлечения данных RQL для работы с объектами доменов

Получение значения ключа из составных атрибутов (extract())

Функция extract() используется для получения значения отдельного ключа из атрибута с типом данных, который хранится как JSON-объект.

Синтаксис использования функции
extract(<attribute>, '<key>' [, '<data-type>'])

Здесь:

  • <attribute> — атрибут;

  • <key> — имя ключа внутри объекта;

  • <data-type> (необязательный аргумент) — тип данных, к которому необходимо привести извлеченное значение. По умолчанию функция возвращает значение типа Text.

К типам данных, которые хранятся как JSON-объект, относятся, например, Ссылка (URL) и Файл (Attachment). В атрибутах типа URL хранятся ссылка на ресурс и опционально — лейбл:

Структура типа данных URL
{
  link: String,
  alias: String
}

В атрибутах типа Attachment содержится, в частности, информация об имени файла и его размере.

Примеры

Извлечение ссылки из атрибута типа URL
constraint: !rql fieldURL IS NULL OR extract(@doc.fieldURL, 'link') = 'https://example.com'

Данное RQL-выражение задает ограничение для значения атрибута fieldURL:

  • Если значение fieldURL не задано, ограничение считается выполненным.

  • В противном случае:

    • Из атрибута извлекается значение по ключу link.

    • Это значение сравнивается со строкой 'https://example.com'.

Таким образом, значение атрибута fieldURL должно содержать ссылку https://example.com.

Извлечение имени и размера файла из атрибута типа Attachment
constraint: !rql attachment IS NULL OR (extract(@doc.attachment, 'filename') LIKE '%jpg' AND extract(@doc.attachment, 'size', 'INTEGER') < 50000)

Данное RQL-выражение накладывает следующие ограничения на атрибут attachment:

  • Если значение attachment не задано, ограничение считается выполненным.

  • В противном случае:

    • Из атрибута attachment извлекается значение ключа filename и проверяется, что имя файла оканчивается на .jpg;

    • Из этого же атрибута извлекается значение ключа size, приводится к типу INTEGER и сравнивается с числом 50 000.

Таким образом, атрибут attachment должен содержать файл с расширением .jpg размером менее 50 000 байт.

Была ли полезна эта страница?

Обратная связь