Operadores ARRAY
Milvus proporciona potentes operadores para consultar campos de matrices, permitiéndole filtrar y recuperar entidades basándose en el contenido de las matrices.
Todos los elementos de una matriz deben ser del mismo tipo, y las estructuras anidadas dentro de las matrices se tratan como cadenas simples. Por lo tanto, cuando se trabaja con campos ARRAY, es aconsejable evitar el anidamiento excesivamente profundo y asegurarse de que sus estructuras de datos son tan planas como sea posible para un rendimiento óptimo.
Operadores ARRAY disponibles
Los operadores ARRAY permiten una consulta detallada de los campos array en Milvus. Estos operadores son:
ARRAY_CONTAINS(identifier, expr): comprueba si un elemento específico existe en un campo de matriz.ARRAY_CONTAINS_ALL(identifier, expr): comprueba si todos los elementos de la lista especificada están presentes en el campo de matriz.ARRAY_CONTAINS_ANY(identifier, expr)comprueba si alguno de los elementos de la lista especificada está presente en el campo matriz.ARRAY_LENGTH(identifier): devuelve el número de elementos de un campo de matriz y puede combinarse con operadores de comparación para filtrar.
ARRAY_CONTAINS
El operador ARRAY_CONTAINS comprueba si existe un elemento específico en un campo de matriz. Es útil cuando se desea encontrar entidades en las que un elemento determinado está presente en la matriz.
Ejemplo
Suponga que tiene un campo de matriz history_temperatures, que contiene las temperaturas mínimas registradas en diferentes años. Para encontrar todas las entidades en las que la matriz contiene el valor 23, puede utilizar la siguiente expresión de filtro:
filter = 'ARRAY_CONTAINS(history_temperatures, 23)'
Esto devolverá todas las entidades en las que la matriz history_temperatures contenga el valor 23.
MATRIZ_CONTIENE_TODOS
El operador ARRAY_CONTAINS_ALL garantiza que todos los elementos de la lista especificada están presentes en el campo de la matriz. Este operador resulta útil cuando se desea buscar entidades que contienen varios valores en la matriz.
Ejemplo
Si desea encontrar todas las entidades en las que la matriz history_temperatures contiene tanto 23 como 24, puede utilizar:
filter = 'ARRAY_CONTAINS_ALL(history_temperatures, [23, 24])'
Esto devolverá todas las entidades en las que la matriz history_temperatures contenga los dos valores especificados.
MATRIZ_CONTIENE_CUALQUIERA
El operador ARRAY_CONTAINS_ANY comprueba si alguno de los elementos de la lista especificada está presente en el campo de la matriz. Resulta útil cuando se desea buscar entidades que contengan al menos uno de los valores especificados en la matriz.
Ejemplo
Para encontrar todas las entidades en las que la matriz history_temperatures contiene 23 o 24, puede utilizar:
filter = 'ARRAY_CONTAINS_ANY(history_temperatures, [23, 24])'
Esto devolverá todas las entidades en las que la matriz history_temperatures contenga al menos uno de los valores 23 o 24.
ARRAY_LONGITUD
ARRAY_LENGTH devuelve la longitud (número de elementos) de un campo de matriz. Acepta exactamente un parámetro: el identificador del campo de la matriz.
Ejemplo
Encontrar todas las entidades en las que la matriz history_temperatures tiene menos de 10 elementos:
filter = 'ARRAY_LENGTH(history_temperatures) < 10'
Esto devolverá todas las entidades en las que la matriz history_temperatures tenga menos de 10 elementos.