배열 연산자
Milvus는 배열 필드를 쿼리하는 강력한 연산자를 제공하여 배열의 내용을 기반으로 엔티티를 필터링하고 검색할 수 있습니다.
배열 내의 모든 요소는 동일한 유형이어야 하며 배열 내의 중첩 구조는 일반 문자열로 취급됩니다. 따라서 배열 필드로 작업할 때는 최적의 성능을 위해 지나치게 깊은 중첩을 피하고 데이터 구조가 가능한 한 평평한지 확인하는 것이 좋습니다.
사용 가능한 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
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개 미만인 모든 엔티티가 반환됩니다.