2014-08-22 11 views
7

Tôi đang sử dụng cơ sở dữ liệu mới từ Microsoft được gọi là DocumentDB. Bây giờ tôi muốn xóa một tài liệu bằng ID, nhưng tôi không thể tìm ra, làm thế nào để làm điều này. Xóa thao tác trong DocumentDB yêu cầu các liên kết tự và chúng khác với các id của riêng tôi.DocumentDB: Xóa tài liệu theo ID

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

tôi có thể thực hiện một truy vấn bổ sung để tìm sự tự liên kết và sau đó vượt qua nó, nhưng điều này sẽ đòi hỏi hai cuộc phẫu thuật thay vì một và đó là những gì tôi muốn tránh. Có cách nào tốt hơn để loại bỏ một mục nhập bằng ID mà không cần sử dụng truy vấn hoặc thủ tục được lưu trữ?

+0

+1 Chính xác câu hỏi tương tự đến với tâm trí của tôi, tại sao bất kỳ hoạt động nào, sử dụng nhà cung cấp LINQ, đều yêu cầu * se lf-link * vào bộ sưu tập. Sau đó trên lượt của nó đòi hỏi một * tự liên kết * vào cơ sở dữ liệu. –

+0

Bất kỳ khả năng chia sẻ hoạt động thứ hai đó trông như thế nào? Bạn đang làm một "SELECT * FROM DOC WHERE ID = 1" đơn giản? – Aidos

Trả lời

5

* CẬP NHẬT * Tính năng này hiện đã được triển khai

* ORIGINAL ĐÁP *

Không phải hôm nay, không có. Bạn có thể truy cập http://feedback.azure.com/forums/263030-documentdb và bỏ phiếu cho đối tượng địa lý tại đó.

+0

Và [phiếu bầu đang mở] (http://feedback.azure.com/forums/263030-documentdb/suggestions/6333050-it-should-be-possible-to-remove-a-document-by-id) và tăng lên. –

+0

Đây là mẫu mã: https://azure.microsoft.com/en-us/blog/azure-documentdb-bids-fond-farewell-to-self-links/ –

+0

Lưu ý, tính năng này hiện đã được triển khai. –

0

vì không có giải pháp cho trường hợp này, tôi khuyên bạn nên truy xuất tất cả tài liệu trong bộ sưu tập hiện có để có quyền truy cập vào giá trị SelfLink và _rid. Tôi vừa mới bắt đầu một trình bao bọc nhỏ để truy cập vào DocumentDB trong Universal Apps và hy vọng CrossPlatform sử dụng Xamarin: https://github.com/JorgeCupi/documentDB-Win10UAP-wrapper vui lòng cung cấp cho tôi mọi phản hồi, tham gia hoặc yêu cầu một số phương pháp cần thiết.

1

Dưới đây là làm thế nào tôi đang xóa

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

Tôi đã thử mã này trong nodejs để deletebyId và nó làm việc cho tôi.

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); 
     }); 
    }); 
} 
Các vấn đề liên quan