Partage via


Utiliser des tableaux et des objets dans Azure Cosmos DB for NoSQL

S’APPLIQUE À : NoSQL

Voici un élément qui est utilisé dans des exemples tout au long de cet article.

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

Tableaux

Vous pouvez construire des tableaux en utilisant de valeurs statiques, comme illustré dans l’exemple suivant.

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

Vous pouvez également utiliser comme ARRAYexpression pour construire un tableau à partir des résultats d’une sous-requête. Cette requête obtient toutes les catégories distinctes.

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"
    ]
  }
]

Itération

L’API pour NoSQL prend en charge l’itération sur les tableaux JSON, avec comme INmot clé dans la source FROM.

Par exemple, la requête suivante effectue une itération pour tags chaque élément du conteneur. La sortie fractionne la valeur du tableau et aplatit les résultats en un tableau unique.

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

Vous pouvez même filtrer chaque entrée du tableau, comme dans l’exemple suivant :

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

Les résultats sont :

[
  "gear"
]

Vous pouvez également effectuer des agrégations sur le résultat d’une itération de tableau. Par exemple, la requête suivante compte le nombre d’étiquettes :

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

Les résultats sont :

[
  2
]

Notes

Lorsque vous utilisez le mot clé IN pour l’itération, vous ne pouvez pas filtrer ou projeter des propriétés en dehors du tableau. Utilisez plutôt de la jointure réflexive.