DocumentDB - रिकॉर्ड्स को सीमित करना

Microsoft ने हाल ही में कई सुधारों को जोड़ा है कि आप Azure DocumentDB को कैसे क्वेरी कर सकते हैं, जैसे कि TOP टू एसक्यूएल व्याकरण, जिससे प्रश्न तेज़ी से चलते हैं और कम संसाधनों का उपभोग करते हैं, क्वेरी ऑपरेटरों के लिए सीमाएं बढ़ जाती हैं, और अतिरिक्त LINQ ऑपरेटरों के लिए समर्थन जोड़ा जाता है। .NET SDK

आइए एक सरल उदाहरण देखें, जिसमें हम केवल पहले दो रिकॉर्ड प्राप्त करेंगे। यदि आपके पास कई रिकॉर्ड हैं और आप उनमें से कुछ को ही पुनः प्राप्त करना चाहते हैं, तो आप शीर्ष कीवर्ड का उपयोग कर सकते हैं। इस उदाहरण में, हमारे पास भूकंपों के बहुत सारे रिकॉर्ड हैं।

अब हम पहले दो रिकॉर्ड दिखाना चाहते हैं

Step 1 - क्वेरी एक्सप्लोरर पर जाएं और इस क्वेरी को चलाएं।

SELECT * FROM c 
WHERE c.magnitude > 2.5

आप देखेंगे कि इसने चार रिकॉर्ड प्राप्त किए हैं क्योंकि हमने अभी तक TOP कीवर्ड निर्दिष्ट नहीं किए हैं।

Step 2- अब उसी क्वेरी के साथ TOP कीवर्ड का उपयोग करें। यहां हमने TOP कीवर्ड निर्दिष्ट किया है और '2' का अर्थ है कि हम केवल दो रिकॉर्ड चाहते हैं।

SELECT TOP 2 * FROM c 
WHERE c.magnitude > 2.5

Step 3 - अब इस क्वेरी को चलाएं और आप देखेंगे कि केवल दो रिकॉर्ड्स को पुनः प्राप्त किया गया है।

इसी तरह, आप .net SDK का उपयोग करके कोड में TOP कीवर्ड का उपयोग कर सकते हैं। निम्नलिखित कार्यान्वयन है।

private async static Task QueryDocumentsWithPaging(DocumentClient client) {
   Console.WriteLine(); 
   Console.WriteLine("**** Query Documents (paged results) ****"); 
   Console.WriteLine();  
   Console.WriteLine("Quering for all documents"); 
	
   var sql = "SELECT TOP 3 * FROM c";  
   var query = client 
      .CreateDocumentQuery(collection.SelfLink, sql) 
      .AsDocumentQuery(); 
		
   while (query.HasMoreResults) {
      var documents = await query.ExecuteNextAsync(); 
		
      foreach (var document in documents) { 
         Console.WriteLine(" PublicId: {0}; Magnitude: {1};", document.publicid,
            document.magnitude); 
      } 
   } 
	
   Console.WriteLine(); 
}

निम्नलिखित CreateDocumentClient कार्य है, जिसमें DocumentClient और भूकंप डेटाबेस को त्वरित किया जाता है।

private static async Task CreateDocumentClient() {
   // Create a new instance of the DocumentClient 
   using (var client = new DocumentClient(new Uri(EndpointUrl), AuthorizationKey)) {
      database = client.CreateDatabaseQuery("SELECT * FROM c WHERE c.id =
         'earthquake'").AsEnumerable().First(); 
			
      collection = client.CreateDocumentCollectionQuery(database.CollectionsLink,
         "SELECT * FROM c WHERE c.id = 'earthquakedata'").AsEnumerable().First(); 
			
      await QueryDocumentsWithPaging(client); 
   } 
}

जब उपरोक्त कोड संकलित और निष्पादित किया जाता है, तो आप देखेंगे कि केवल तीन रिकॉर्ड पुनर्प्राप्त किए गए हैं।

**** Query Documents (paged results) **** 
 
Quering for all documents 
PublicId: 2015p947400; Magnitude: 2.515176918; 
PublicId: 2015p947373; Magnitude: 1.506774108; 
PublicId: 2015p947329; Magnitude: 1.593394461;