ARRAY 演算子
Zilliz Cloud は、配列フィールドをクエリするための強力な演算子を提供しており、配列の内容に基づいてエンティティをフィルタリングおよび取得できます。
配列内のすべての要素は同じ型である必要があり、配列内のネストされた構造はプレーンな文字列として扱われます。したがって、ARRAY フィールドを操作する際には、過度に深いネストを避け、パフォーマンスを最適化するためにデータ構造を可能な限りフラットにすることをお勧めします。
利用可能な ARRAY 演算子
ARRAY 演算子を使用すると、Zilliz Cloud クラスター内の配列フィールドを細かくクエリできます。これらの演算子は次のとおりです。
-
ARRAY_CONTAINS(identifier, expr): 配列フィールド内に特定の要素が存在するかどうかをチェックします。 -
ARRAY_CONTAINS_ALL(identifier, expr): 指定されたリストのすべての要素が配列フィールド内に存在することを保証します。 -
ARRAY_CONTAINS_ANY(identifier, expr): 指定されたリストのいずれかの要素が配列フィールド内に存在するかどうかをチェックします。 -
ARRAY_LENGTH(identifier): 配列フィールド内の要素数を返し、比較演算子と組み合わせてフィルタリングに使用できます。
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 演算子は、指定されたリスト内のいずれかの要素が配列フィールドに存在するかどうかをチェックします。この演算子は、配列内に指定された値の少なくとも1つを含むエンティティをマッチさせたい場合に役立ちます。
例
history_temperatures 配列に 23 または 24 のいずれかが含まれるすべてのエンティティを検索するには、次のように使用します:
filter = 'ARRAY_CONTAINS_ANY(history_temperatures, [23, 24])'
これは、history_temperatures 配列に値 23 または 24 の少なくとも一方を含むすべてのエンティティを返します。
ARRAY_LENGTH
ARRAY_LENGTH は、配列フィールドの長さ(要素数)を返します。この関数はちょうど1つのパラメータを受け取ります。そのパラメータは配列フィールドの識別子です。
例
history_temperatures 配列の要素数が10未満であるすべてのエンティティを検索するには:
filter = 'ARRAY_LENGTH(history_temperatures) < 10'
これにより、history_temperatures 配列の要素数が 10 未満であるすべてのエンティティが返されます。