DocumentDB SQL - Tümceden

Bu bölümde, normal SQL'deki standart bir FROM yan tümcesi gibi çalışmayan FROM yan tümcesini ele alacağız.

Sorgular her zaman belirli bir koleksiyon bağlamında çalışır ve koleksiyondaki belgeler arasında birleştirilemez, bu da neden bir FROM yan tümcesine ihtiyacımız olduğunu merak etmemize neden olur. Aslında yapmıyoruz, ancak dahil etmezsek, koleksiyondaki belgeleri sorgulamayacağız.

Bu maddenin amacı, sorgunun üzerinde çalışması gereken veri kaynağını belirlemektir. Genellikle tüm koleksiyon kaynaktır, ancak bunun yerine koleksiyonun bir alt kümesi belirtilebilir. Kaynak sorguda daha sonra filtrelenmediği veya yansıtılmadığı sürece FROM <from_specification> yan tümcesi isteğe bağlıdır.

Aynı örneğe tekrar bakalım. AşağıdakiAndersenFamily belge.

{ 
   "id": "AndersenFamily", 
   "lastName": "Andersen",
	
   "parents": [ 
      { "firstName": "Thomas", "relationship":  "father" }, 
      { "firstName": "Mary Kay", "relationship":  "mother" } 
   ], 
	
   "children": [ 
      { 
         "firstName": "Henriette Thaulow", 
         "gender": "female", 
         "grade": 5, 
         "pets": [ { "givenName": "Fluffy", "type":  "Rabbit" } ] 
      } 
   ], 
	
   "location": { "state": "WA", "county": "King", "city": "Seattle" }, 
   "isRegistered": true 
}

Aşağıdaki SmithFamily belge.

{ 
   "id": "SmithFamily", 
	
   "parents": [ 
      { "familyName": "Smith", "givenName": "James" }, 
      { "familyName": "Curtis", "givenName": "Helen" } 
   ], 
	
   "children": [ 
      { 
         "givenName": "Michelle", 
         "gender": "female", 
         "grade": 1 
      }, 
		
      { 
         "givenName": "John", 
         "gender": "male", 
         "grade": 7,
			
         "pets": [ 
            { "givenName": "Tweetie", "type": "Bird" } 
         ] 
      } 
   ], 
	
   "location": { 
      "state": "NY", 
      "county": "Queens", 
      "city": "Forest Hills" 
   }, 
	
   "isRegistered": true 
}

Aşağıdaki WakefieldFamily belge.

{ 
   "id": "WakefieldFamily", 
	 
   "parents": [ 
      { "familyName": "Wakefield", "givenName": "Robin" }, 
      { "familyName": "Miller", "givenName": "Ben" } 
   ],
   
   "children": [ 
      { 
         "familyName": "Merriam", 
         "givenName": "Jesse", 
         "gender": "female", 
         "grade": 6, 
			
         "pets": [ 
            { "givenName": "Charlie Brown", "type": "Dog" }, 
            { "givenName": "Tiger", "type": "Cat" }, 
            { "givenName": "Princess", "type": "Cat" } 
         ] 
      }, 
		
      { 
         "familyName": "Miller", 
         "givenName": "Lisa", 
         "gender": "female", 
         "grade": 3,
			
         "pets": [ 
            { "givenName": "Jake", "type": "Snake" } 
         ] 
      } 
   ], 
	
   "location": { "state": "NY", "county": "Manhattan", "city": "NY" }, 
   "isRegistered": false 
}

Yukarıdaki sorguda, "SELECT * FROM c”, Tüm Families koleksiyonunun numaralandırılacak kaynak olduğunu belirtir.

Alt belgeler

Kaynak ayrıca daha küçük bir alt kümeye indirgenebilir. Her belgede yalnızca bir alt ağacı almak istediğimizde, aşağıdaki örnekte gösterildiği gibi alt kök, kaynak olabilir.

Aşağıdaki sorguyu çalıştırdığımızda -

SELECT * FROM Families.parents

Aşağıdaki alt belgeler alınacaktır.

[ 
   [ 
      { 
         "familyName": "Wakefield", 
         "givenName": "Robin" 
      },
		
      { 
         "familyName": "Miller", 
         "givenName": "Ben" 
      } 
   ],
	
   [ 
      { 
         "familyName": "Smith", 
         "givenName": "James"
      },
		
      { 
         "familyName": "Curtis", 
         "givenName": "Helen" 
      } 
   ],
	
   [ 
      { 
         "firstName": "Thomas", 
         "relationship": "father" 
      },
		
      { 
         "firstName": "Mary Kay", 
         "relationship": "mother" 
      } 
   ] 
]

Bu sorgu sonucunda yalnızca üst alt belgelerin alındığını görebiliyoruz.