9

我正在使用 Microsoft 的一个名为 DocumentDB 的新数据库。现在我想按 ID 删除一个文档,但我不知道该怎么做。DocumentDB 中的删除操作需要自链接,它们与我自己的 id 不同。

using (var client = new DocumentClient(EndPoint, AuthKey))
{
    await client.DeleteDocumentAsync("**self-link here**");
}

我可以执行一个额外的查询来找到自链接然后传递它,但这需要两个操作而不是一个,这就是我想避免的。有没有更好的方法可以在不使用查询或存储过程的情况下按 ID 删除条目?

4

6 回答 6

5

* 更新 *此功能现已实施

*原始答案*

不是今天,不是。您可以前往http://feedback.azure.com/forums/263030-documentdb并在那里投票支持该功能。

于 2014-08-22T17:49:14.767 回答
3

这是我删除文档的方式

{                
var docUri = UriFactory.CreateDocumentUri(_documentDataBaseId, _documentCollectionId, docId);
                await _documentClient.DeleteDocumentAsync(docUri);
}
于 2017-01-11T05:30:22.107 回答
1

此功能现已实施(截至 8/2015 - https://feedback.azure.com/forums/263030-documentdb/suggestions/6333050-it-should-be-possible-to-remove-a-document-旁注

于 2016-04-09T16:14:46.470 回答
0

我不断收到此错误:Microsoft.Azure.Documents.DocumentClientException:

系统中不存在具有指定 id 的实体。,

删除的主要技巧是 PartionKey id。您假设在 PartionKey 内部提供 id 就像在代码示例中一样。我尝试了很多方法,但我总是收到不同的错误......只有这个解决方案对我有用。

await client.DeleteDocumentAsync(input[0].SelfLink, 
  new RequestOptions
  {
     PartitionKey = new PartitionKey(input[0].Id)
  });
Hope this helps :)
于 2019-09-14T00:33:50.830 回答
0

由于这种情况没有解决方案,我建议检索现有集合中的所有文档以访问 SelfLink 和 _rid 值。我刚刚启动了一个迷你包装器来访问通用应用程序中的 DocumentDB,并希望使用 Xamarin 跨平台:https ://github.com/JorgeCupi/documentDB-Win10UAP-wrapper随时给我任何反馈、参与或请求一些需要的方法。

于 2015-08-31T17:18:38.777 回答
0

我已经在nodejs中尝试过这段代码来删除byId,它对我有用。

deleteDocumentById: function(params, callback) {
    var self = this,
        query= params.query,
        collection = params.collection;

    client.queryDocuments(collection._self, query, function(err, docs) {
        if (err) {
            return callback(err);
        }
        client.deleteDocument(docs[0]._self, docs[0], function(err, success) {
            if (err) {
                return callback(err);
            }
            callback(null, success);
        });
    });
}
于 2017-01-13T04:44:16.543 回答