Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
El lenguaje de consulta proporciona una sintaxis eficaz similar a SQL para trabajar con datos JSON. Este lenguaje está diseñado para familiarizarse con los usuarios con experiencia de SQL, a la vez que admite la flexibilidad y la naturaleza jerárquica de los documentos JSON. En este artículo se presentan los conceptos básicos, la sintaxis y las características del lenguaje de consulta.
Conceptos básicos del lenguaje de consulta
El lenguaje de consulta se crea para proporcionar acceso expresivo y eficaz a los datos almacenados como documentos JSON. En su base, el lenguaje está diseñado para trabajar de forma nativa con datos jerárquicos y flexibles, que admiten consultas simples y complejas sobre documentos que podrían tener estructuras variables.
Las consultas se componen mediante una sintaxis conocida de tipo SQL, pero se adaptan al modelo de documento. Esta adaptación significa que, a diferencia de las bases de datos relacionales tradicionales, no hay ningún esquema fijo: las propiedades pueden faltar o tener tipos diferentes en los documentos. El lenguaje distingue mayúsculas de minúsculas y admite la referencia a propiedades anidadas, matrices y objetos directamente dentro de las consultas. Los operadores lógicos, de comparación y aritméticos están disponibles, y el lenguaje está diseñado para ser intuitivo para los desarrolladores con experiencia de SQL, al tiempo que adopta la flexibilidad de los datos NoSQL.
El motor de consultas está optimizado para un alto rendimiento y escalabilidad, mediante el uso automático de índices para filtrar, ordenar y agregar datos de forma eficaz. Admite una amplia gama de patrones de consulta, desde búsquedas simples hasta agregaciones complejas y subconsultas. Esta compatibilidad hace que el motor de consultas sea adecuado para cargas de trabajo transaccionales y analíticas. El lenguaje también proporciona construcciones para trabajar con matrices, controlar valores NULL y sin definir y proyectar los resultados en formas JSON flexibles. Estas construcciones permiten a los desarrolladores recuperar exactamente los datos que necesitan en el formato requerido por sus aplicaciones.
Estructura de consulta básica
Una consulta típica consta de las siguientes cláusulas:
-
SELECT: especifica qué campos o valores se van a devolver. -
FROM: identifica el contenedor de origen y puede asignar un alias. -
WHERE: filtra los documentos en función de las condiciones. -
ORDER BY: ordena los resultados. -
GROUP BY: agrupa los resultados por una o varias propiedades.
Ejemplo: Consulta simple
SELECT p.id, p.name
FROM products p
WHERE p.price > 20
ORDER BY p.price ASC
Esta consulta devuelve los id productos y name con un precio superior a 20, ordenados por precio en orden ascendente.
Trabajar con propiedades JSON
Puede acceder a las propiedades anidadas mediante notación de puntos o notación de corchetes:
SELECT p.manufacturer.name, p["metadata"].sku
FROM products p
Las matrices se pueden recorrer mediante JOIN subconsultas o :
SELECT p.name, c AS color
FROM products p
JOIN c IN p.metadata.colors
Filtrado de datos
La WHERE cláusula admite una amplia gama de operadores, incluidas las operaciones aritméticas, lógicas, de comparación y de cadena:
SELECT *
FROM products p
WHERE p.category IN ("Accessories", "Clothing") AND p.price BETWEEN 10 AND 50
Agregación y agrupación
Puede usar funciones de agregado y resultados de grupo:
SELECT p.category, COUNT(1) AS productCount
FROM products p
GROUP BY p.category
Distinct, Top y Like
-
DISTINCTquita valores duplicados. -
TOP Nlimita el número de resultados. -
LIKEadmite la coincidencia de patrones con caracteres comodín.
SELECT DISTINCT VALUE p.category
FROM products p
SELECT TOP 5 *
FROM products p
ORDER BY p.price DESC
SELECT *
FROM products p
WHERE p.name LIKE "%bike%"
Subconsultas
Las subconsultas permiten un filtrado y una proyección más avanzados, incluida la comprobación de la existencia de valores en matrices:
SELECT VALUE p.name
FROM products p
WHERE EXISTS (
SELECT VALUE c FROM c IN p.metadata.colors WHERE c LIKE "%blue%"
)