Operadores de ARRAY

O Milvus disponibiliza operadores ARRAY para filtrar campos ARRAY e atualizar parcialmente os valores dos campos ARRAY.

Todos os elementos de um ARRAY devem ser do mesmo tipo, e as estruturas aninhadas dentro dos ARRAYs são tratadas como cadeias de caracteres simples. Por conseguinte, ao trabalhar com campos ARRAY, é aconselhável evitar aninhamentos excessivamente profundos e garantir que as suas estruturas de dados sejam o mais planas possível, para um desempenho ideal.

Os operadores ARRAY no Milvus abrangem dois cenários de utilização:

  • Expressões de filtragem para consultas e pesquisas.

  • Atualizações parciais em pedidos « upsert ».

Operadores ARRAY disponíveis

A tabela seguinte lista os operadores ARRAY disponíveis no Milvus.

OperadorUtilização emDescrição
ARRAY_CONTAINS(identificador, expressão)Expressão de filtragemVerifica se um elemento específico existe num campo ARRAY.
ARRAY_CONTAINS_ALL(identificador, expressão)Expressão de filtroVerifica se todos os elementos de uma lista especificada existem num campo ARRAY.
ARRAY_CONTAINS_ANY(identificador, expressão)Expressão de filtroVerifica se algum elemento de uma lista especificada existe num campo ARRAY.
ARRAY_LENGTH(identificador)Expressão de filtragemDevolve o número de elementos num campo ARRAY e pode ser combinada com operadores de comparação para fins de filtragem.
ARRAY_APPENDupsert com field_opsAcrescenta elementos de carga útil a um campo ARRAY existente. Disponível no Milvus v2.6.17 e versões posteriores.
ARRAY_REMOVEupsert com field_opsRemove todos os elementos de um campo ARRAY existente que correspondam a um valor na carga útil do pedido. Disponível no Milvus v2.6.17 e versões posteriores.

ARRAY_CONTAINS

O operador « ARRAY_CONTAINS » verifica se um elemento específico existe num campo «array». É útil quando se pretende encontrar entidades em que um determinado elemento esteja presente no «array».

Exemplo

Suponha que tem um campo de matriz history_temperatures, que contém as temperaturas mínimas registadas em diferentes anos. Para encontrar todas as entidades em que a matriz contenha o valor 23, pode utilizar a seguinte expressão de filtro:

filter = 'ARRAY_CONTAINS(history_temperatures, 23)'

Isto irá devolver todas as entidades em que a matriz ` history_temperatures ` contenha o valor ` 23`.

ARRAY_CONTAINS_ALL

O operador « ARRAY_CONTAINS_ALL » garante que todos os elementos da lista especificada estão presentes no campo de matriz. Este operador é útil quando pretende encontrar entidades que contenham vários valores na matriz.

Exemplo

Se pretender encontrar todas as entidades em que a matriz ` history_temperatures ` contenha tanto ` 23 ` como ` 24`, pode utilizar:

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

Isto irá devolver todas as entidades em que a matriz ` history_temperatures ` contenha ambos os valores especificados.

ARRAY_CONTAINS_ANY

O operador ARRAY_CONTAINS_ANY verifica se algum dos elementos da lista especificada está presente no campo do array. Isto é útil quando se pretende encontrar entidades que contenham pelo menos um dos valores especificados no array.

Exemplo

Para encontrar todas as entidades em que o array ` history_temperatures ` contenha ` 23 ` ou ` 24`, pode utilizar:

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

Isto irá devolver todas as entidades em que a matriz ` history_temperatures ` contenha pelo menos um dos valores ` 23 ` ou ` 24`.

ARRAY_LENGTH

A função ` ARRAY_LENGTH ` devolve o comprimento (número de elementos) de um campo de matriz. Aceita exatamente um parâmetro: o identificador do campo de matriz.

Exemplo

Para encontrar todas as entidades em que a matriz « history_temperatures » tenha menos de 10 elementos:

filter = 'ARRAY_LENGTH(history_temperatures) < 10'

Isto irá devolver todas as entidades em que a matriz « history_temperatures » tenha menos de 10 elementos.

ARRAY_APPENDCompatible with Milvus 2.6.17+

O operador ARRAY_APPEND acrescenta elementos de carga útil a um campo ARRAY existente durante um pedido upsert. Não se trata de uma expressão de filtro. Utilize-o quando pretender adicionar valores a um array sem primeiro consultar o valor atual do array.

O exemplo Python seguinte acrescenta ` "premium" ` ao campo `ARRAY` de ` tags ` da entidade cuja chave primária é ` 1`:

from pymilvus import FieldOp, MilvusClient

client = MilvusClient(
    uri="http://localhost:19530",
    token="root:Milvus"
)

client.upsert(
    collection_name="users",
    data=[{"pk": 1, "tags": ["premium"]}],
    field_ops={"tags": FieldOp.array_append()},
)

A adição de ARRAY_APPEND a um campo através de field_ops permite a semântica de atualização parcial para esse campo. Para conhecer o fluxo de trabalho completo, os tipos de elementos suportados e os limites, consulte Campos ARRAY de «Upsert» no modo de fusão.

ARRAY_REMOVECompatible with Milvus 2.6.17+

O operador « ARRAY_REMOVE » remove todos os elementos de um campo «ARRAY» existente que correspondam a um valor na carga útil do pedido durante um pedido « upsert ». Não se trata de uma expressão de filtro. Utilize-o quando pretender remover valores correspondentes de um array sem primeiro consultar o valor atual do array.

O exemplo Python seguinte remove « "trial" » do campo ARRAY « tags » da entidade cuja chave primária é « 1 »:

from pymilvus import FieldOp, MilvusClient

client = MilvusClient(
    uri="http://localhost:19530",
    token="root:Milvus"
)

client.upsert(
    collection_name="users",
    data=[{"pk": 1, "tags": ["trial"]}],
    field_ops={"tags": FieldOp.array_remove()},
)

Atribuir « ARRAY_REMOVE » a um campo através de « field_ops » permite a semântica de atualização parcial para esse campo. Para conhecer o fluxo de trabalho completo, os tipos de elementos suportados e os limites, consulte «Campos ARRAY de Upsert no modo de fusão».

Traduzido porDeepL

Experimente o Milvus gerenciado gratuitamente

O Zilliz Cloud é descomplicado, powered by Milvus e 10x mais rápido.

Começar
Feedback

Esta página foi útil?