Operadores JSON
Milvus suporta operadores avançados para consulta e filtragem de campos JSON, tornando-os perfeitos para a gestão de dados complexos e estruturados. Estes operadores permitem uma consulta altamente eficaz de documentos JSON, permitindo-lhe recuperar entidades com base em elementos específicos, valores ou condições dentro dos campos JSON. Esta secção irá guiá-lo através da utilização de operadores específicos de JSON no Milvus, fornecendo exemplos práticos para ilustrar a sua funcionalidade.
Os campos JSON não podem lidar com estruturas complexas e aninhadas e tratam todas as estruturas aninhadas como strings simples. Por conseguinte, ao trabalhar com campos JSON, é aconselhável evitar aninhamentos excessivamente profundos e garantir que as suas estruturas de dados são tão planas quanto possível para um desempenho ótimo.
Operadores JSON disponíveis
Milvus fornece vários operadores JSON poderosos que ajudam a filtrar e consultar dados JSON, e esses operadores são.
JSON_CONTAINS(identifier, expr)
: Filtra entidades onde a expressão JSON especificada é encontrada dentro do campo.JSON_CONTAINS_ALL(identifier, expr)
: Garante que todos os elementos da expressão JSON especificada estão presentes no campo.JSON_CONTAINS_ANY(identifier, expr)
: Filtra entidades onde pelo menos um membro da expressão JSON existe dentro do campo.
Vamos explorar esses operadores com exemplos para ver como eles podem ser aplicados em cenários do mundo real.
JSON_CONTAINS
O operador json_contains
verifica se um elemento específico ou uma submatriz existe num campo JSON. É útil quando se pretende garantir que uma matriz ou objeto JSON contém um determinado valor.
Exemplo
Imagine que você tem uma coleção de produtos, cada um com um campo tags
que contém uma matriz JSON de cadeias de caracteres, como ["electronics", "sale", "new"]
. Pretende filtrar os produtos que têm a etiqueta "sale"
.
# JSON data: {"tags": ["electronics", "sale", "new"]}
filter = 'json_contains(tags, "sale")'
Neste exemplo, o Milvus devolverá todos os produtos em que o campo tags
contém o elemento "sale"
.
JSON_CONTAINS_ALL
O operador json_contains_all
garante que todos os elementos de uma expressão JSON especificada estão presentes no campo de destino. É particularmente útil quando é necessário fazer corresponder vários valores numa matriz JSON.
Exemplo
Continuando com o cenário das etiquetas de produto, se pretender encontrar todos os produtos que tenham as etiquetas "electronics"
, "sale"
, e "new"
, pode utilizar o operador json_contains_all
.
# JSON data: {"tags": ["electronics", "sale", "new", "discount"]}
filter = 'json_contains_all(tags, ["electronics", "sale", "new"])'
Essa consulta retornará todos os produtos em que a matriz tags
contém os três elementos especificados: "electronics"
, "sale"
, e "new"
.
JSON_COTAINS_ANY
O operador json_contains_any
filtra entidades em que pelo menos um membro da expressão JSON existe no campo. Isto é útil quando se pretende fazer corresponder entidades com base em qualquer um de vários valores possíveis.
Exemplo
Digamos que pretende filtrar produtos que tenham pelo menos uma das etiquetas "electronics"
, "sale"
, ou "new"
. Pode utilizar o operador json_contains_any
para o conseguir.
# JSON data: {"tags": ["electronics", "sale", "new"]}
filter = 'json_contains_any(tags, ["electronics", "new", "clearance"])'
Neste caso, o Milvus devolverá todos os produtos que tenham pelo menos uma das etiquetas da lista ["electronics", "new", "clearance"]
. Mesmo que um produto tenha apenas uma destas etiquetas, será incluído no resultado.