陣列運算元
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
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 個元素的所有實體。