跳到主要内容

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 数组同时包含 2324 的所有 entity,您可以使用:

filter = 'ARRAY_CONTAINS_ALL(history_temperatures, [23, 24])'

这将返回所有 history_temperatures 数组包含两个指定值的 entity。

ARRAY_CONTAINS_ANY

ARRAY_CONTAINS_ANY 操作符检查指定列表中的任何元素是否存在于数组 field 中。当您想要匹配数组中至少包含一个指定值的 entity 时,这很有用。

示例

要查找 history_temperatures 数组包含 2324 中任一值的所有 entity,您可以使用:

filter = 'ARRAY_CONTAINS_ANY(history_temperatures, [23, 24])'

这将返回所有 history_temperatures 数组至少包含值 2324 中一个的 entity。

ARRAY_LENGTH

ARRAY_LENGTH 操作符允许您根据数组 field 中的元素数量过滤 entity。当您需要查找具有特定长度数组的 entity 时,这很有用。

示例

如果您想要查找 history_temperatures 数组少于 10 个元素的所有 entity,您可以使用:

filter = 'ARRAY_LENGTH(history_temperatures) < 10'

这将返回所有 history_temperatures 数组少于 10 个元素的 entity。