DocumentDB-문서 업데이트

이 장에서는 문서를 업데이트하는 방법을 배웁니다. Azure Portal을 사용하면 문서 탐색기에서 문서를 열고 텍스트 파일처럼 편집기에서 업데이트하여 문서를 쉽게 업데이트 할 수 있습니다.

'저장'버튼을 클릭합니다. 이제 .Net SDK를 사용하여 문서를 변경해야 할 때 바로 교체 할 수 있습니다. 지루할뿐만 아니라 문서를 수정하는 동안에는 원하지 않는 리소스 ID도 변경하므로 삭제하고 다시 만들 필요가 없습니다. 다음은 .Net SDK를 사용하여 문서를 업데이트하는 단계입니다.

isNew 속성이 true 인 문서를 쿼리 할 다음 ReplaceDocuments 작업을 살펴 ​​보겠습니다.하지만 아무것도 없기 때문에 아무것도 얻지 못합니다. 따라서 이름이 New Customer로 시작하는 이전에 추가 한 문서를 수정 해 보겠습니다.

Step 1 −이 문서에 isNew 속성을 추가하고 그 값을 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 − 동일한 STARTSWITH 쿼리를 사용하여 업데이트 할 문서를 가져 오면 문서가 제공됩니다. 여기에서 동적 개체로 다시 가져옵니다.

Step 3 − isNew 속성을 첨부하고 각 문서에 대해 true로 설정합니다.

Step 4 − ReplaceDocumentAsync를 호출하여 업데이트 된 문서와 함께 문서의 SelfLink를 전달합니다.

이제 이것이 효과가 있음을 증명하기 위해 isNew가 true 인 문서를 쿼리합니다. 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