DocumentDB - Xóa tài liệu

Trong chương này, chúng ta sẽ tìm hiểu cách xóa tài liệu khỏi tài khoản DocumentDB của bạn. Sử dụng Azure Portal, bạn có thể dễ dàng xóa bất kỳ tài liệu nào bằng cách mở tài liệu đó trong Document Explorer và nhấp vào tùy chọn 'Xóa'.

Nó sẽ hiển thị thông báo xác nhận. Bây giờ nhấn nút Có và bạn sẽ thấy rằng tài liệu không còn có sẵn trong tài khoản DocumentDB của bạn nữa.

Bây giờ khi bạn muốn xóa một tài liệu bằng .Net SDK.

Step 1- Đó là mô hình giống như chúng ta đã thấy trước đây, nơi chúng ta sẽ truy vấn đầu tiên để lấy các Liên kết tự của mỗi tài liệu mới. Chúng tôi không sử dụng SELECT * ở đây, điều này sẽ trả về toàn bộ tài liệu mà chúng tôi không cần.

Step 2 - Thay vào đó, chúng tôi chỉ chọn các SelfLinks vào một danh sách và sau đó chúng tôi chỉ gọi DeleteDocumentAsync cho mỗi SelfLink, một cái tại một thời điểm, để xóa tài liệu khỏi bộ sưu tập.

private async static Task DeleteDocuments(DocumentClient client) {
   Console.WriteLine();
   Console.WriteLine(">>> Delete Documents <<<");
   Console.WriteLine();
   Console.WriteLine("Quering for documents to be deleted");
	
   var sql =
      "SELECT VALUE c._self FROM c WHERE STARTSWITH(c.name, 'New Customer') = true";
		
   var documentLinks =
      client.CreateDocumentQuery<string>(collection.SelfLink, sql).ToList();
		
   Console.WriteLine("Found {0} documents to be deleted", documentLinks.Count);

   foreach (var documentLink in documentLinks) {
      await client.DeleteDocumentAsync(documentLink);
   }
	
   Console.WriteLine("Deleted {0} new customer documents", documentLinks.Count);
   Console.WriteLine();
}

Step 3 - Bây giờ chúng ta hãy gọi DeleteDocuments ở trên từ tác vụ 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 DeleteDocuments(client); 
   } 
}

Khi đoạn mã trên được thực thi, bạn sẽ nhận được kết quả sau.

***** Delete Documents *****  
Quering for documents to be deleted 
Found 2 documents to be deleted 
Deleted 2 new customer documents