Operadores JSON
Milvus soporta operadores avanzados para consultar y filtrar campos JSON, haciéndolos perfectos para gestionar datos complejos y estructurados. Estos operadores permiten una consulta altamente efectiva de documentos JSON, permitiéndole recuperar entidades basadas en elementos específicos, valores o condiciones dentro de los campos JSON. Esta sección le guiará a través del uso de operadores específicos JSON en Milvus, proporcionando ejemplos prácticos para ilustrar su funcionalidad.
Los campos JSON no pueden manejar estructuras anidadas complejas y tratan todas las estructuras anidadas como cadenas simples. Por lo tanto, cuando se trabaja con campos JSON, es aconsejable evitar el anidamiento excesivamente profundo y asegurarse de que sus estructuras de datos son tan planas como sea posible para un rendimiento óptimo.
Operadores JSON disponibles
Milvus proporciona varios potentes operadores JSON que ayudan a filtrar y consultar datos JSON, y estos operadores son.
JSON_CONTAINS(identifier, expr)
: Filtra entidades donde la expresión JSON especificada se encuentra dentro del campo.JSON_CONTAINS_ALL(identifier, expr)
: Asegura que todos los elementos de la expresión JSON especificada están presentes en el campo.JSON_CONTAINS_ANY(identifier, expr)
: Filtra entidades donde al menos un miembro de la expresión JSON existe dentro del campo.
Exploremos estos operadores con ejemplos para ver cómo se pueden aplicar en situaciones reales.
JSON_CONTAINS
El operador json_contains
comprueba si existe un elemento o subarray específico dentro de un campo JSON. Es útil cuando quieres asegurarte de que un array u objeto JSON contiene un valor concreto.
Ejemplo
Imagine que tiene una colección de productos, cada uno con un campo tags
que contiene una matriz JSON de cadenas, como ["electronics", "sale", "new"]
. Quiere filtrar los productos que tienen la etiqueta "sale"
.
# JSON data: {"tags": ["electronics", "sale", "new"]}
filter = 'json_contains(tags, "sale")'
En este ejemplo, Milvus devolverá todos los productos cuyo campo tags
contenga el elemento "sale"
.
JSON_CONTAINS_ALL
El operador json_contains_all
garantiza que todos los elementos de una expresión JSON especificada estén presentes en el campo de destino. Resulta especialmente útil cuando es necesario buscar múltiples valores dentro de una matriz JSON.
Ejemplo
Siguiendo con el escenario de las etiquetas de producto, si desea encontrar todos los productos que tengan las etiquetas "electronics"
, "sale"
, y "new"
, puede utilizar el operador json_contains_all
.
# JSON data: {"tags": ["electronics", "sale", "new", "discount"]}
filter = 'json_contains_all(tags, ["electronics", "sale", "new"])'
Esta consulta devolverá todos los productos cuya matriz tags
contenga los tres elementos especificados: "electronics"
, "sale"
, y "new"
.
JSON_COTAINS_ANY
El operador json_contains_any
filtra las entidades en las que existe al menos un miembro de la expresión JSON dentro del campo. Resulta útil cuando se desea buscar entidades en función de uno de varios valores posibles.
Ejemplo
Supongamos que desea filtrar productos que tengan al menos una de las etiquetas "electronics"
, "sale"
, o "new"
. Puede utilizar el operador json_contains_any
para conseguirlo.
# JSON data: {"tags": ["electronics", "sale", "new"]}
filter = 'json_contains_any(tags, ["electronics", "new", "clearance"])'
En este caso, Milvus le devolverá todos los productos que tengan al menos una de las etiquetas de la lista ["electronics", "new", "clearance"]
. Incluso si un producto sólo tiene una de estas etiquetas, se incluirá en el resultado.