是否有任何C#代码可用于删除cosmos DB文档

时间:2019-07-11 13:02:29

标签: c# azure azure-cosmosdb sql-delete

我正在开发.net api,其中一个任务是根据条件删除一些文档。这些文档位于Cosmos DB中。

我已经尝试通过存储过程,但是没有获得正确的SP来删除记录。我试图使用带有条件的条件选择查询来获取文档,并通过循环遍历来获取并传递文档ID,并且试图删除 using DeleteDocumentAsync

//---Deleting Document based on documentId from corresponding DbName,CollectionName-----------//

 private async Task DeleteSecurityDocument(string databaseName, string collectionName, string documentName)
        {

                string endPoint = ConfigurationManager.AppSettings["DocDbEndPoint"];
                string masterKey = ConfigurationManager.AppSettings["DocDbmasterKey"];

                var client = new DocumentClient(new Uri(endPoint), masterKey);

                await client.DeleteDocumentAsync(UriFactory.CreateDocumentUri(databaseName, collectionName, documentName));    

        }

2 个答案:

答案 0 :(得分:1)

此代码对我有用:

var docUri = UriFactory.CreateDocumentUri(databaseId, collectionId, documentId);
var doc = await _client.ReadDocumentAsync(docUri, options);

if (doc != null)
{
    return await _client.DeleteDocumentAsync(doc.SelfLink, options);
}

其中optionsRequestOptions的实例,如果您使用分区集合,则应该设置PartitionKey

这里很可能不需要在删除之前阅读文档,您可以直接将docUri放进去,我没有检查过(该代码已经存在于项目中很长时间了。)

答案 1 :(得分:0)

/ ---------------。删除文件------------ / var docUri = UriFactory.CreateDocumentUri(databaseName,collectionName,documentName); RequestOptions选项=新的RequestOptions {PartitionKey = new PartitionKey(Partitionkeyvalue)}; var deleteresponse =等待客户端。DeleteDocumentAsync(docUri,选项);

现在对我来说很好。问题在于partitiokeyyvalue。谢谢