陣列運算元
Milvus 提供強大的運算符號來查詢陣列欄位,允許您根據陣列的內容來過濾和擷取實體。
陣列中的所有元素必須是相同的類型,陣列中的巢狀結構會被視為普通字串。因此,在處理 ARRAY 欄位時,建議避免過深的巢狀結構,並確保資料結構盡可能扁平化,以獲得最佳效能。
可用的 ARRAY 運算符
ARRAY 運算符允許在 Milvus 中細緻地查詢陣列欄位。這些運算符有
ARRAY_CONTAINS(identifier, expr)
: 檢查陣列欄位中是否存在特定元素。ARRAY_CONTAINS_ALL(identifier, expr)
:確保指定清單中的所有元素都存在於陣列欄位中。ARRAY_CONTAINS_ANY(identifier, expr)
:檢查指定清單中的任何元素是否存在於陣列欄位。ARRAY_LENGTH(identifier, expr)
ARRAY_COTAINS: 允許您根據陣列欄位中元素的數量來過濾實體。
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 的所有實體。