Операторы ARRAY
Milvus предоставляет мощные операторы для запросов к полям массивов, позволяя фильтровать и извлекать сущности на основе содержимого массивов.
Все элементы в массиве должны быть одного типа, а вложенные структуры внутри массивов рассматриваются как обычные строки. Поэтому при работе с полями ARRAY рекомендуется избегать чрезмерно глубокой вложенности и следить за тем, чтобы структуры данных были как можно более плоскими для достижения оптимальной производительности.
Доступные операторы ARRAY
Операторы ARRAY позволяют выполнять тонкие запросы к полям массивов в Milvus. К таким операторам относятся:
ARRAY_CONTAINS(identifier, expr): проверяет, существует ли определенный элемент в поле массива.ARRAY_CONTAINS_ALL(identifier, expr): гарантирует, что все элементы указанного списка присутствуют в поле массива.ARRAY_CONTAINS_ANY(identifier, expr): проверяет, присутствует ли в поле массива какой-либо элемент из указанного списка.ARRAY_LENGTH(identifier): возвращает количество элементов в поле массива и может использоваться вместе с операторами сравнения для фильтрации.
ARRAY_CONTAINS
Оператор ARRAY_CONTAINS проверяет, существует ли определенный элемент в поле массива. Он полезен, когда нужно найти сущности, в которых данный элемент присутствует в массиве.
Пример
Предположим, у вас есть поле массива history_temperatures, которое содержит зарегистрированные самые низкие температуры за разные годы. Чтобы найти все сущности, в которых массив содержит значение 23, вы можете использовать следующее выражение фильтра:
filter = 'ARRAY_CONTAINS(history_temperatures, 23)'
Это вернет все сущности, в которых массив history_temperatures содержит значение 23.
МАССИВ_СОДЕРЖИТ_ВСЕ
Оператор ARRAY_CONTAINS_ALL гарантирует, что все элементы указанного списка присутствуют в поле массива. Этот оператор полезен, когда нужно найти сущности, содержащие несколько значений в массиве.
Пример
Если вы хотите найти все сущности, в которых массив history_temperatures содержит и 23, и 24, вы можете использовать этот оператор:
filter = 'ARRAY_CONTAINS_ALL(history_temperatures, [23, 24])'
Это вернет все сущности, в которых массив history_temperatures содержит оба указанных значения.
ARRAY_CONTAINS_ANY
Оператор ARRAY_CONTAINS_ANY проверяет, присутствует ли в поле массива любой элемент из указанного списка. Это полезно, когда нужно найти сущности, содержащие хотя бы одно из указанных значений в массиве.
Пример
Чтобы найти все сущности, в которых массив history_temperatures содержит либо 23, либо 24, вы можете использовать оператор:
filter = 'ARRAY_CONTAINS_ANY(history_temperatures, [23, 24])'
Это вернет все сущности, в которых массив history_temperatures содержит хотя бы одно из значений 23 или 24.
ARRAY_LENGTH
Функция ARRAY_LENGTH возвращает длину (количество элементов) поля массива. Она принимает ровно один параметр: идентификатор поля массива.
Пример
Найти все сущности, в которых массив history_temperatures имеет менее 10 элементов:
filter = 'ARRAY_LENGTH(history_temperatures) < 10'
Это вернет все сущности, в которых массив history_temperatures имеет меньше 10 элементов.