Trabajo con matrices y objetos en Azure Cosmos DB for NoSQL
SE APLICA A: NoSQL
Este es un elemento que se usa en ejemplos de este artículo.
{
"name": "Sondon Fins",
"categories": [
{ "name": "swim" },
{ "name": "gear"}
],
"metadata": {
"sku": "73310",
"manufacturer": "AdventureWorks"
},
"priceInUSD": 132.35,
"priceInCAD": 174.50
}
Matrices
Puede construir matrices con valores estáticos, como se muestra en el ejemplo siguiente.
SELECT
[p.priceInUSD, p.priceInCAD] AS priceData
FROM products p
[
{
"priceData": [
132.35,
174.5
]
}
]
También puede usar la expresión ARRAY
para construir una matriz a partir de los resultados de la subconsulta. Esta consulta obtiene todas las categorías distintas.
SELECT
p.id,
ARRAY (SELECT DISTINCT VALUE c.name FROM c IN p.categories) AS categoryNames
FROM
products p
[
{
"id": "a0151c77-ffc3-4fa6-a495-7b53d936faa6",
"categoryNames": [
"swim",
"gear"
]
}
]
Iteración
La API para NoSQL permite iterar en las matrices JSON mediante la palabra clave IN
en el origen FROM
.
Por ejemplo, la siguiente consulta realiza una iteración tags
para cada elemento del contenedor. La salida divide el valor de la matriz y aplana los resultados en una sola matriz.
SELECT
*
FROM
products IN products.categories
[
{
"name": "swim"
},
{
"name": "gear"
}
]
Puede filtrar aún más por cada entrada individual de la matriz, como se muestra en el ejemplo siguiente:
SELECT VALUE
p.name
FROM
p IN p.categories
WHERE
p.name LIKE "ge%"
Los resultados son:
[
"gear"
]
También puede aplicar agregaciones al resultado de la iteración de una matriz. Por ejemplo, la siguiente consulta cuenta el número de etiquetas:
SELECT VALUE
COUNT(1)
FROM
p IN p.categories
Los resultados son:
[
2
]
Nota:
Cuando se usa la palabra clave IN
para la iteración, no se pueden filtrar ni proyectar las propiedades fuera de la matriz. En su lugar, debería usar autocombinaciones.
Contenido relacionado
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de