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, 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演算子は、指定されたリストの要素のいずれかが配列フィールド内に存在するかどうかをチェックします。これは、配列内に指定された値の少なくとも1つが含まれるエンティティを一致させたい場合に便利です。
例
history_temperatures配列に23または24のいずれかが含まれるすべてのエンティティを検索するには、以下を使用できます。
filter = 'ARRAY_CONTAINS_ANY(history_temperatures, [23, 24])'
これにより、history_temperatures配列に値23または24の少なくとも1つが含まれるすべてのエンティティが返されます。
ARRAY_LENGTH
ARRAY_LENGTH演算子を使用すると、配列フィールド内の要素数に基づいてエンティティをフィルターできます。これは、特定の長さを持つ配列を含むエンティティを検索する必要がある場合に便利です。
例
history_temperatures配列の要素数が10未満のすべてのエンティティを検索したい場合は、以下を使用できます。
filter = 'ARRAY_LENGTH(history_temperatures) < 10'
これにより、history_temperatures配列の要素数が10未満のすべてのエンティティが返されます。