Azure Cosmos Db文档 - 希望将replacementocumentasync与文档中已删除的属性一起使用

时间:2017-07-23 18:27:25

标签: azure azure-cosmosdb

// I am using code like below
Document doc = client.CreateDocumentQuery<Document>(collectionLink)
                            .Where(r => r.Id == "doc id")    
                            .AsEnumerable()
                            .SingleOrDefault();

doc.SetPropertyValue("MyProperty1", "updated value");
Document updated = await client.ReplaceDocumentAsync(doc);

想要删除&#34; MyProperty2&#34;从文件。怎么做?

2 个答案:

答案 0 :(得分:3)

您似乎想要更新MyProperty1属性并从文档中删除MyProperty2属性,以下示例代码供您参考。

private async Task updateDoc()
{
    string EndpointUri = "xxxxx";
    string PrimaryKey = "xxxxx";
    DocumentClient client;

    client = new DocumentClient(new Uri(EndpointUri), PrimaryKey);

    Document doc = client.CreateDocumentQuery<Document>(UriFactory.CreateDocumentCollectionUri("testdb", "testcoll"))
                .Where(r => r.Id == "doc5")
                .AsEnumerable()
                .SingleOrDefault();

    //dynamically cast doc back to your MyPoco
    MyPoco poco = (dynamic)doc;

    //Update MyProperty1 of the poco object
    poco.MyProperty1 = "updated value";

    //replace document
    Document updateddoc = await client.ReplaceDocumentAsync(doc.SelfLink, poco);


    Console.WriteLine(updateddoc);
}

public class MyPoco
{
    public string id { get; set; }
    public string MyProperty1 { get; set; }
}

我的文件: enter image description here更新 enter image description here

修改

  

这将删除&#34; MyProperty3&#34;和&#34; MyProperty4&#34;同样。

正如您所提到的,将属性设置为null也是一种方法。

Document doc = client.CreateDocumentQuery<Document>(UriFactory.CreateDocumentCollectionUri("testdb", "testcoll"))
            .Where(r => r.Id == "doc5")
            .AsEnumerable()
            .SingleOrDefault();

doc.SetPropertyValue("MyProperty2", null);

//replace document
Document updateddoc = await client.ReplaceDocumentAsync(doc.SelfLink, doc);

答案 1 :(得分:0)

感谢您的回复。你得到了我所要求的。 我不想使用MyPoco作为使用Microsoft.Azure.Document是最灵活的。 此外,如果MyPoco存在于MyPoco中,使用此方法也会删除任何MyProperty3。 仅使用Document类,以下工作。 eachDoc.SetPropertyValue(&#34; MyProperty2&#34;,null);