Aracılığıyla paylaş


NoSQL için Azure Cosmos DB'de diziler ve nesnelerle çalışma

UYGULANANLAR: NoSQL

Bu makaledeki örneklerde kullanılan bir öğe aşağıda verilmiştir.

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

Diziler

Aşağıdaki örnekte gösterildiği gibi statik değerleri kullanarak diziler oluşturabilirsiniz.

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

Bir alt sorgunun sonuçlarından ARRAYdizi oluşturmak için de ifadesini kullanabilirsiniz. Bu sorgu tüm ayrı kategorileri alır.

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

Yineleme

NoSQL IÇIN API, kaynakta FROM anahtar sözcüğüyleIN JSON dizileri üzerinde yineleme desteği sağlar.

Örnek olarak, bir sonraki sorgu kapsayıcıdaki her öğe için yineleme tags gerçekleştirir. Çıkış, dizi değerini böler ve sonuçları tek bir diziye düzleştirir.

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

Aşağıdaki örnekte gösterildiği gibi, dizinin her bir girdisine daha fazla filtre ekleyebilirsiniz:

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

Sonuçlar:

[
  "gear"
]

Ayrıca bir dizi yinelemesinin sonucu üzerinde toplama da yapabilirsiniz. Örneğin, aşağıdaki sorgu etiket sayısını sayar:

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

Sonuçlar:

[
  2
]

Not

Yineleme için anahtar sözcüğünü IN kullanırken, dizi dışındaki özellikleri filtreleyemez veya yansıtamazsınız. Bunun yerine, kendi kendine birleşimleri kullanmanız gerekir.