删除DocumentDb特定的文档 [英] Delete specific document from DocumentDb

查看:148
本文介绍了删除DocumentDb特定的文档的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

以下code检索所有CrawlResult文件与一个特定的jobId。

The following code retrieves all CrawlResult documents with a specific jobId.

var result = (from c in documentDb.CreateDocumentQuery<Shared.CrawlResult>(collection.SelfLink)
              where c.JobId == jobId
              select c);

现在我要删除所有文件与此特定的jobId。删除文件的唯一办法,我发现是:

Now I want to delete all documents with this specific jobId. The only way to delete documents I found was:

documentDb.DeleteDocumentAsync(string documentLink)

但我怎么让documentLink执行 documentDb.DeleteDocumentAsync()

推荐答案

要做到这一点,你需要写一个SQL查询,这样就可以动态地访问这两个文件的内部属性,以及CrawlResult。

To do this, you need to write a SQL query so that you can dynamically access both the internal properties of Document, as well as CrawlResult.

例如,如以下code:

For example, like in the following code:

class CrawlResult
{
    [JsonProperty("jobId")]
    public string JobId;
}

private async Task QueryAndDelete(DocumentClient client, string collectionLink)
{
    await client.CreateDocumentAsync(collectionLink, new CrawlResult { JobId = "J123" });
    await client.CreateDocumentAsync(collectionLink, new CrawlResult { JobId = "J456" });

    foreach (Document document in client.CreateDocumentQuery(
        collectionLink,
        new SqlQuerySpec(
            "SELECT * FROM crawlResults r WHERE r.jobId = @jobId",
            new SqlParameterCollection(new[] { new SqlParameter { Name = "@jobId", Value = "J123" } })
            )))
    {
        // Optionally, cast to CrawlResult using a dynamic cast
        CrawlResult result = (CrawlResult)(dynamic)document;

        await client.DeleteDocumentAsync(document.SelfLink);
    }
}

这篇关于删除DocumentDb特定的文档的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆