DocumentDB - अद्यतन दस्तावेज़

इस अध्याय में, हम सीखेंगे कि दस्तावेजों को कैसे अपडेट किया जाए। एज़्योर पोर्टल का उपयोग करके, आप दस्तावेज़ एक्सप्लोरर में दस्तावेज़ को खोलकर और इसे टेक्स्ट फ़ाइल की तरह संपादक में अपडेट करके आसानी से दस्तावेज़ को अपडेट कर सकते हैं।

'सेव' बटन पर क्लिक करें। अब जब आपको .Net SDK का उपयोग करके किसी डॉक्यूमेंट को बदलना होगा तो आप इसे बदल सकते हैं। आपको इसे हटाने और पुनः बनाने की आवश्यकता नहीं है, जो थकाऊ होने के अलावा, संसाधन आईडी को भी बदल देगा, जिसे आप तब नहीं करना चाहेंगे जब आप केवल एक दस्तावेज़ को संशोधित कर रहे हों। .Net SDK का उपयोग करके दस्तावेज़ को अद्यतन करने के लिए यहाँ निम्नलिखित चरण दिए गए हैं।

आइए निम्नलिखित प्रतिस्थापन कार्य पर एक नज़र डालें जहां हम उन दस्तावेज़ों के लिए क्वेरी करेंगे जहाँ isnew गुण सत्य है, लेकिन हमें कोई भी नहीं मिलेगा क्योंकि कोई भी नहीं है। तो, चलिए उन दस्तावेजों को संशोधित करते हैं जिन्हें हमने पहले जोड़ा था, जिनके नाम नए ग्राहक के साथ शुरू होते हैं।

Step 1 - इन दस्तावेजों में isNew संपत्ति जोड़ें और इसके मूल्य को सही पर सेट करें।

private async static Task ReplaceDocuments(DocumentClient client) {

   Console.WriteLine(); 
   Console.WriteLine(">>> Replace Documents <<<"); 
   Console.WriteLine();  
   Console.WriteLine("Quering for documents with 'isNew' flag");
	
   var sql = "SELECT * FROM c WHERE c.isNew = true"; 
   var documents = client.CreateDocumentQuery(collection.SelfLink, sql).ToList();
	
   Console.WriteLine("Documents with 'isNew' flag: {0} ", documents.Count); 
   Console.WriteLine();  
   Console.WriteLine("Quering for documents to be updated"); 
	
   sql = "SELECT * FROM c WHERE STARTSWITH(c.name, 'New Customer') = true"; 
   documents = client.CreateDocumentQuery(collection.SelfLink, sql).ToList(); 
   Console.WriteLine("Found {0} documents to be updated", documents.Count); 
	
   foreach (var document in documents) {
      document.isNew = true; 
      var result = await client.ReplaceDocumentAsync(document._self, document); 
      var updatedDocument = result.Resource; 
      Console.WriteLine("Updated document 'isNew' flag: {0}", updatedDocument.isNew); 
   }
	
   Console.WriteLine();  
   Console.WriteLine("Quering for documents with 'isNew' flag");
	
   sql = "SELECT * FROM c WHERE c.isNew = true"; 
   documents = client.CreateDocumentQuery(collection.SelfLink, sql).ToList(); 
   Console.WriteLine("Documents with 'isNew' flag: {0}: ", documents.Count); 
   Console.WriteLine(); 
}

Step 2 - उसी STARTSWITH क्वेरी का उपयोग करके अपडेट किए जाने वाले दस्तावेज़ प्राप्त करें और यह हमें दस्तावेज़ प्रदान करता है, जिसे हम डायनामिक ऑब्जेक्ट के रूप में यहां वापस ला रहे हैं।

Step 3 - isnew संपत्ति संलग्न करें और इसे प्रत्येक दस्तावेज़ के लिए सही पर सेट करें।

Step 4 - अपडेट किए गए डॉक्यूमेंट के साथ डॉक्यूमेंटडिमेंमेंटएस्प्यून्स, डॉक्यूमेंट के सेल्फलिंक में पास करना।

अब सिर्फ यह साबित करने के लिए कि यह काम किया है, उन दस्तावेजों के लिए क्वेरी करें जहां नया सही नहीं है। आइए CreateDocumentClient कार्य से उपरोक्त प्रश्नों को कॉल करें।

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 =
         'myfirstdb'").AsEnumerable().First(); 
			
      collection = client.CreateDocumentCollectionQuery(database.CollectionsLink,
         "SELECT * FROM c WHERE c.id = 'MyCollection'").AsEnumerable().First();
			
      //await CreateDocuments(client);  
      //QueryDocumentsWithSql(client); 
      //await QueryDocumentsWithPaging(client); 
      //QueryDocumentsWithLinq(client); 
      await ReplaceDocuments(client); 
   }
	
}

जब उपरोक्त कोड संकलित और निष्पादित किया जाता है, तो आपको निम्न आउटपुट प्राप्त होगा।

**** Replace Documents ****  
Quering for documents with 'isNew' flag 
Documents with 'isNew' flag: 0 
Quering for documents to be updated 
Found 2 documents to be updated 
Updated document ‘isNew’ flag: True 
Updated document ‘isNew’ flag: True 
Quering for documents with 'isNew' flag 
Documents with 'isNew' flag: 2