DocumentDB SQL - Anahtar Kelime Arasında

BETWEEN anahtar sözcüğü, SQL'deki gibi değer aralıklarına karşı sorguları ifade etmek için kullanılır. BETWEEN dizelere veya sayılara karşı kullanılabilir. BETWEEN'i DocumentDB ve ANSI SQL'de kullanmak arasındaki temel fark, aralık sorgularını karışık türlerin özelliklerine göre ifade edebilmenizdir.

Örneğin, bazı belgelerde bir sayı olarak "not" almanız ve diğer belgelerde dizeler olması mümkündür. Bu durumlarda, iki farklı sonuç türü arasında bir karşılaştırma "tanımsız" olur ve belge atlanır.

Önceki örnekten üç belgeye 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 
}

Sorgunun, birinci çocuğun notunun 1-5 (her ikisi de dahil) arasında olduğu tüm aile belgelerini döndürdüğü bir örneğe bakalım.

BETWEEN anahtar kelimesinin kullanıldığı sorgu ve ardından AND mantıksal operatörü aşağıdadır.

SELECT * 
FROM Families.children[0] c 
WHERE c.grade BETWEEN 1 AND 5

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

[ 
   { 
      "givenName": "Michelle", 
      "gender": "female", 
      "grade": 1 
   }, 
	
   { 
      "firstName": "Henriette Thaulow", 
      "gender": "female", 
      "grade": 5, 
		
      "pets": [ 
         { 
            "givenName": "Fluffy",
            "type": "Rabbit" 
         } 
      ] 
   } 
]

Önceki örneğin aralığının dışındaki notları görüntülemek için, aşağıdaki sorguda gösterildiği gibi DEĞİL BETWEEN'i kullanın.

SELECT * 
FROM Families.children[0] c 
WHERE c.grade NOT BETWEEN 1 AND 5

Bu sorgu çalıştırıldığında. Aşağıdaki çıktıyı üretir.

[ 
   { 
      "familyName": "Merriam", 
      "givenName": "Jesse", 
      "gender": "female", 
      "grade": 6, 
		
      "pets": [ 
         { 
            "givenName": "Charlie Brown", 
            "type": "Dog" 
         }, 
			
         { 
            "givenName": "Tiger", 
            "type": "Cat" 
         },
			
         {
            "givenName": "Princess", 
            "type": "Cat" 
         } 
      ] 
   }
]