首页 文章

DocumentDB:按ID删除文档

提问于
浏览
9

我正在使用Microsoft的一个名为DocumentDB的新数据库 . 现在我想通过ID删除文档,但我无法弄清楚,如何做到这一点 . DocumentDB中的删除操作需要自我链接,它们与我自己的ID不同 .

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

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

6 回答

  • 1

    *** UPDATE *** 此功能现已实施

    *** ORIGINAL ANSWER ***

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

  • 0

    这是我删除文档的方式

    {                
    var docUri = UriFactory.CreateDocumentUri(_documentDataBaseId, _documentCollectionId, docId);
                    await _documentClient.DeleteDocumentAsync(docUri);
    }
    
  • 0
  • 1

    此功能现已推出,您可以调用DeleteDocumentAsync删除文档

    // Get a Database by querying for it by id
    Database db = client.CreateDatabaseQuery()
                        .Where(d => d.Id == "SalesDb")
                        .AsEnumerable()
                        .Single();
    
    // Use that Database's SelfLink to query for a DocumentCollection by id
    DocumentCollection coll = client.CreateDocumentCollectionQuery(db.SelfLink)
                                    .Where(c => c.Id == "Catalog")
                                    .AsEnumerable()
                                    .Single();
    
    // Use that Collection's SelfLink to query for a DocumentCollection by id
    Document doc = client.CreateDocumentQuery(coll.SelfLink)
                         .Where(d => d.Id == "prd123")
                         .AsEnumerable()
                         .Single();
    
    // Now that we have a doc, use it's SelfLink property to delete it
    await client.DeleteDocumentAsync(doc.SelfLink);
    
  • 3

    因为's no solution for this case I'建议检索现有集合中的所有文档以访问SelfLink和_rid值 . 我刚刚启动了一个迷你包装器来访问Universal Apps中的DocumentDB,希望使用Xamarin的CrossPlatform:https://github.com/JorgeCupi/documentDB-Win10UAP-wrapper随时给我任何反馈,参与或请求一些必要的方法 .

  • 5

    我在nodejs中尝试使用deletebyId这个代码,它对我有用 .

    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);
            });
        });
    }
    

相关问题