Partilhar via


Trabalhar com matrizes e objetos no Azure Cosmos DB para NoSQL

APLICA-SE A: NoSQL

Aqui está um item que é usado em exemplos ao longo deste artigo.

{
  "name": "Sondon Fins",
  "categories": [
     { "name": "swim" },
     { "name": "gear"}
  ],
  "metadata": {
    "sku": "73310",
    "manufacturer": "AdventureWorks"
  },
  "priceInUSD": 132.35,
  "priceInCAD": 174.50
}

Matrizes

Você pode construir matrizes usando valores estáticos, conforme mostrado no exemplo a seguir.

SELECT
  [p.priceInUSD, p.priceInCAD] AS priceData
FROM products p
[
  {
    "priceData": [
      132.35,
      174.5
    ]
  }
]

Você também pode usar a ARRAY expressão para construir uma matriz a partir dos resultados de uma subconsulta. Esta consulta obtém todas as categorias distintas.

SELECT
    p.id,
    ARRAY (SELECT DISTINCT VALUE c.name FROM c IN p.categories) AS categoryNames
FROM
    products p
[
  {
    "id": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
    "categoryNames": [
      "swim",
      "gear"
    ]
  }
]

Iteração

A API para NoSQL fornece suporte para iteração sobre matrizes JSON, com a IN palavra-chave na FROM origem.

Como exemplo, a próxima consulta executa iteração para tags cada item no contêiner. A saída divide o valor da matriz e nivela os resultados em uma única matriz.

SELECT
    *
FROM 
  products IN products.categories
[
  {
    "name": "swim"
  },
  {
    "name": "gear"
  }
]

Você pode filtrar ainda mais cada entrada individual da matriz, conforme mostrado no exemplo a seguir:

SELECT VALUE
    p.name
FROM
    p IN p.categories
WHERE
    p.name LIKE "ge%"

Os resultados são:

[
  "gear"
]

Você também pode agregar sobre o resultado de uma iteração de matriz. Por exemplo, a consulta a seguir conta o número de tags:

SELECT VALUE
    COUNT(1)
FROM
    p IN p.categories

Os resultados são:

[
  2
]

Nota

Ao usar a IN palavra-chave para iteração, não é possível filtrar ou projetar quaisquer propriedades fora da matriz. Em vez disso, você deve usar auto-junções.