Операторы ARRAY
Milvus предоставляет мощные операторы для запросов к полям массивов, позволяя вам фильтровать и извлекать сущности на основе содержимого массивов.
Все элементы в массиве должны быть одного типа, а вложенные структуры внутри массивов рассматриваются как обычные строки. Поэтому при работе с полями ARRAY рекомендуется избегать чрезмерно глубокой вложенности и следить за тем, чтобы структуры данных были как можно более плоскими для достижения оптимальной производительности.
Доступные операторы ARRAY
Операторы ARRAY позволяют выполнять тонкие запросы к полям массивов в Milvus. К таким операторам относятся.
ARRAY_CONTAINS(identifier, expr)
: проверяет, существует ли определенный элемент в поле массива.ARRAY_CONTAINS_ALL(identifier, expr)
: гарантирует, что все элементы указанного списка присутствуют в поле массива.ARRAY_CONTAINS_ANY(identifier, expr)
: проверяет, присутствует ли в поле массива какой-либо элемент из указанного списка.ARRAY_LENGTH(identifier, expr)
: позволяет фильтровать сущности по количеству элементов в поле массива.
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 элементов.