DocumentDB - Perbarui Dokumen

Pada bab ini, kita akan mempelajari cara memperbarui dokumen. Menggunakan portal Azure, Anda dapat dengan mudah memperbarui dokumen dengan membuka dokumen di Penjelajah dokumen dan memperbaruinya di editor seperti file teks.

Klik tombol 'Simpan'. Sekarang ketika Anda perlu mengubah dokumen menggunakan .Net SDK Anda bisa menggantinya. Anda tidak perlu menghapus dan membuatnya kembali, yang selain membosankan, juga akan mengubah id sumber daya, yang tidak ingin Anda lakukan saat Anda hanya memodifikasi dokumen. Berikut adalah langkah-langkah berikut untuk memperbarui dokumen menggunakan .Net SDK.

Mari kita lihat tugas ReplaceDocuments berikut di mana kita akan meminta dokumen di mana properti isNew benar, tetapi kita tidak akan mendapatkan apa pun karena tidak ada. Jadi, mari kita ubah dokumen yang kita tambahkan sebelumnya, yang namanya dimulai dengan Pelanggan Baru.

Step 1 - Tambahkan properti isNew ke dokumen ini dan setel nilainya menjadi true.

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 - Dapatkan dokumen diperbarui menggunakan kueri STARTSWITH yang sama dan itu memberi kami dokumen, yang kami dapatkan kembali ke sini sebagai objek dinamis.

Step 3 - Lampirkan properti isNew dan setel ke true untuk setiap dokumen.

Step 4 - Panggil ReplaceDocumentAsync, meneruskan SelfLink dokumen, bersama dengan dokumen yang diperbarui.

Sekarang hanya untuk membuktikan bahwa ini berhasil, kueri untuk dokumen di mana isNew sama dengan true. Mari panggil kueri di atas dari tugas 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); 
   }
	
}

Ketika kode di atas dikompilasi dan dijalankan, Anda akan menerima output berikut.

**** 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