DocumentDB SQL - Skaler İfadeler

DocumentDB SQL'de SELECT yan tümcesi sabitler, aritmetik ifadeler, mantıksal ifadeler vb. Gibi skaler ifadeleri de destekler. Normalde skaler sorgular nadiren kullanılır çünkü koleksiyondaki belgeleri gerçekten sorgulamazlar, sadece ifadeleri değerlendirirler. Ancak, temelleri öğrenmek, ifadelerin nasıl kullanılacağını ve bir sorguda JSON'u nasıl şekillendireceğinizi öğrenmek için skaler ifade sorgularını kullanmak yine de yararlıdır ve bu kavramlar, bir koleksiyondaki belgelere karşı çalıştıracağınız gerçek sorgulara doğrudan uygulanır.

Çoklu skaler sorgu içeren bir örneğe bakalım.

Sorgu Gezgini'nde, yalnızca yürütülecek metni seçin ve 'Çalıştır'ı tıklayın. İlkini çalıştıralım.

SELECT "Hello"

Yukarıdaki sorgu yürütüldüğünde aşağıdaki çıktıyı üretir.

[ 
   { 
      "$1": "Hello" 
   } 
]

Bu çıktı biraz kafa karıştırıcı görünebilir, bu yüzden onu parçalayalım.

  • İlk olarak, son demoda gördüğümüz gibi, sorgu sonuçları her zaman köşeli parantez içinde yer alır çünkü bunlar bir JSON dizisi olarak döndürülür, hatta bunun gibi yalnızca tek bir belge döndüren skaler ifade sorgularından kaynaklanır.

  • İçinde bir belge bulunan bir dizimiz var ve bu belgenin içinde SELECT deyimindeki tek ifade için tek bir özellik var.

  • SELECT ifadesi bu özellik için bir ad sağlamaz, bu nedenle DocumentDB $ 1 kullanarak otomatik olarak bir tane oluşturur.

  • Bu genellikle istediğimiz şey değildir, bu nedenle, sorgudaki ifadeyi takma ad olarak adlandırmak için AS'yi kullanabiliriz; bu, oluşturulan belgedeki özellik adını bu örnekte olmasını istediğiniz şekilde yani word olarak ayarlar.

SELECT "Hello" AS word

Yukarıdaki sorgu yürütüldüğünde aşağıdaki çıktıyı üretir.

[ 
   { 
      "word": "Hello" 
   } 
]

Benzer şekilde, aşağıdaki başka bir basit sorgudur.

SELECT ((2 + 11 % 7)-2)/3

Sorgu aşağıdaki çıktıyı alır.

[ 
   { 
      "$1": 1.3333333333333333 
   } 
]

İç içe dizileri ve gömülü nesneleri şekillendirmenin başka bir örneğine bakalım.

SELECT 
   { 
      "words1": 
         ["Hello", "World"], 
      "words2": 
         ["How", "Are", "You?"] 
   } AS allWords

Yukarıdaki sorgu yürütüldüğünde aşağıdaki çıktıyı üretir.

[ 
   { 
      "allWords": { 
         "words1": [ 
            "Hello", 
            "World" 
         ],
			
         "words2": [ 
            "How", 
            "Are", 
            "You?" 
         ] 
      } 
   } 
]