2014-08-22 12 views
7

Sto utilizzando un nuovo database Microsoft chiamato DocumentDB. Ora voglio cancellare un documento per ID, ma non riesco a capire come farlo. L'operazione di eliminazione in DocumentDB richiede collegamenti automatici e sono diversi dai miei ID personali.DocumentDB: Elimina un documento per ID

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

mi può eseguire una query aggiuntiva per trovare l'auto-link e poi passarlo, ma questo richiederà due operazioni invece uno e questo è ciò che vorrei evitare. C'è un modo migliore per rimuovere una voce per ID senza utilizzare query o stored procedure?

+0

+1 Esattamente la stessa domanda che mi è venuta in mente, perché qualsiasi operazione, utilizzando i provider LINQ, richiede un * se lf-link * a una raccolta. Quest'ultimo a sua volta richiede un * auto collegamento * al database. –

+0

Qualche possibilità di condividere come appare quella seconda operazione? Stai facendo un semplice "SELECT * FROM DOC WHERE ID = 1"? – Aidos

risposta

5

* UPDATE * Questa caratteristica è stato implementato

* RISPOSTA ORIGINALE *

Non

oggi, no. Puoi andare a http://feedback.azure.com/forums/263030-documentdb e votare per la funzione lì.

+0

E [la votazione è aperta] (http://feedback.azure.com/forums/263030-documentdb/suggestions/6333050-it-should-be-possible-to-remove-a-document-by-id) e in aumento. –

+0

Ecco il codice di esempio: https://azure.microsoft.com/en-us/blog/azure-documentdb-bids-fond-farewell-to-self-links/ –

+0

Nota, questa funzione è stata implementata. –

0

poiché non esiste una soluzione per questo caso, si consiglia di recuperare tutti i documenti nella raccolta esistente per ottenere l'accesso ai valori SelfLink e _rid. Ho appena avviato un mini wrapper per accedere a DocumentDB in Universal Apps e spero che CrossPlatform utilizzi Xamarin: https://github.com/JorgeCupi/documentDB-Win10UAP-wrapper sentiti libero di darmi qualsiasi feedback, partecipare o richiedere alcuni metodi necessari.

1

ecco come lo sto eliminando

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

Ho provato questo codice nella nodejs per deletebyId e

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