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 ARRAY
expression 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 IN
mot 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.