📜  DocumentDB-更新文档

📅  最后修改于: 2020-11-28 13:47:02             🧑  作者: Mango


在本章中,我们将学习如何更新文档。使用Azure门户,可以轻松地更新文档,方法是在“文档资源管理器”中打开文档,然后在编辑器中像文本文件一样对其进行更新。

更新文件

点击“保存”按钮。现在,当您需要使用.Net SDK更改文档时,只需替换它即可。您无需删除并重新创建它,这不仅很繁琐,而且还可以更改资源ID,而您在修改文档时就不想这样做。以下是使用.Net SDK更新文档的以下步骤。

让我们看一下下面的ReplaceDocuments任务,我们将在其中查询isNew属性为true的文档,但由于没有任何属性,我们将一无所获。因此,让我们修改我们之前添加的文档,这些文档的名称以“新客户”开头。

步骤1-将isNew属性添加到这些文档并将其值设置为true。

private async static Task ReplaceDocuments(DocumentClient client) {

   Console.WriteLine(); 
   Console.WriteLine(">>> Replace Documents <<

步骤2-使用相同的STARTSWITH查询获取要更新的文档,这将为我们提供文档,我们将其作为动态对象返回此处。

步骤3-附加isNew属性并将每个文档设置为true。

步骤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