ARRAY 操作符
Milvus 提供了强大的操作符来查询数组 field,允许您根据数组内容过滤和检索 entity。
数组内的所有元素必须是相同类型,数组内的嵌套结构被视为普通字符串。因此,在使用 ARRAY field 时,建议避免过度深层的嵌套,确保您的数据结构尽可能平坦以获得最佳性能。
可用的 ARRAY 操作符
ARRAY 操作符允许对 Milvus 中的数组 field 进行细粒度查询。这些操作符包括:
-
ARRAY_CONTAINS(identifier, expr)
:检查数组 field 中是否存在特定元素。 -
ARRAY_CONTAINS_ALL(identifier, expr)
:确保指定列表的所有元素都存在于数组 field 中。 -
ARRAY_CONTAINS_ANY(identifier, expr)
:检查指定列表中的任何元素是否存在于数组 field 中。 -
ARRAY_LENGTH(identifier, expr)
:允许您根据数组 field 中的元素数量过滤 entity。
ARRAY_CONTAINS
ARRAY_CONTAINS
操作符检查数组 field 中是否存在特定元素。当您想要查找给定元素存在于数组中的 entity 时,这很有用。
示例
假设您有一个数组 field history_temperatures
,它包含不同年份记录的最低温度。要查找数组包含值 23
的所有 entity,您可以使用以下过滤表达式:
filter = 'ARRAY_CONTAINS(history_temperatures, 23)'
这将返回所有 history_temperatures
数组包含值 23
的 entity。
ARRAY_CONTAINS_ALL
ARRAY_CONTAINS_ALL
操作符确保指定列表的所有元素都存在于数组 field 中。当您想要匹配数组中包含多个值的 entity 时,此操作符很有用。
示例
如果您想要查找 history_temperatures
数组同时包含 23
和 24
的所有 entity,您可以使用:
filter = 'ARRAY_CONTAINS_ALL(history_temperatures, [23, 24])'
这将返回所有 history_temperatures
数组包含两个指定值的 entity。
ARRAY_CONTAINS_ANY
ARRAY_CONTAINS_ANY
操作符检查指定列表中的任何元素是否存在于数组 field 中。当您想要匹配数组中至少包含一个指定值的 entity 时,这很有用。
示例
要查找 history_temperatures
数组包含 23
或 24
中任一值的所有 entity,您可以使用:
filter = 'ARRAY_CONTAINS_ANY(history_temperatures, [23, 24])'
这将返回所有 history_temperatures
数组至少包含值 23
或 24
中一个的 entity。
ARRAY_LENGTH
ARRAY_LENGTH
操作符允许您根据数组 field 中的元素数量过滤 entity。当您需要查找具有特定长度数组的 entity 时,这很有用。
示例
如果您想要查找 history_temperatures
数组少于 10 个元素的所有 entity,您可以使用:
filter = 'ARRAY_LENGTH(history_temperatures) < 10'
这将返回所有 history_temperatures
数组少于 10 个元素的 entity。