Dokument löschen
Die hier gezeigten Schritte veranschaulichen, wie man ein Dokument löscht.
- Senden Sie eine Anfrage an
DELETEmit der neuesten Version des Dokuments_revim Abfrage-String. - Führen Sie den Befehl
https://$ACCOUNT.cloudant.com/$DATABASE/$DOCUMENT_IDaus. Die Antwort enthält die ID und die neue Revision des Dokuments oder eine Fehlernachricht, wenn das Löschen fehlgeschlagen ist.
Wenn Sie nicht die aktuellste Version von „ _rev “ bereitstellen, gibt IBM Cloudant einen 409-Fehler zurück. Dieser Fehler verhindert
das Überschreiben von Daten, die von anderen Clients geändert wurden. Wenn das Schreibquorum nicht erreicht werden kann, wird eine Antwort 202 zurückgegeben.
Das angegebene Dokument wird von IBM Cloudant nicht vollständig gelöscht. Stattdessen wird ein Tombstone (Markierung für ein gelöschtes Objekt) mit Basisinformationen zu dem Dokument beibehalten. Dieser Tombstone ist erforderlich, um die Löschaktion in andere Datenbankkopien zu replizieren. Da Tombstones auf unbestimmte Zeit in der Datenbank verbleiben, erhöht das wiederholte Erstellen und Löschen von Dokumenten die Plattenspeicherplatzbelegung der Datenbank. Dadurch kann auch die Abfragezeit für den Primärindex zunehmen, der zum Suchen von Dokumenten anhand der Dokument-ID verwendet wird.
Die folgenden Schritte zeigen Ihnen, wie Sie eine Anfrage über HTTP löschen können.
-
Senden Sie eine
DELETE-Anfrage mit dem neuesten_revdes Dokuments im Abfrage-String, indem Sie HTTP verwenden. -
Führen Sie den Befehl
DELETE /$DATABASE/$DOCUMENT_ID?rev=$REV HTTP/1.1aus.
Die folgenden Codebeispiele zeigen Ihnen, wie Sie ein Dokument über die Befehlszeile löschen können.
# make sure $JSON contains the correct `_rev` value!
curl -H "Authorization: Bearer $API_BEARER_TOKEN" -X DELETE "$SERVICE_URL/events/0007241142412418284?rev=2-9a0d1cd9f40472509e9aac6461837367"
import com.ibm.cloud.cloudant.v1.Cloudant;
import com.ibm.cloud.cloudant.v1.model.DeleteDocumentOptions;
import com.ibm.cloud.cloudant.v1.model.DocumentResult;
Cloudant service = Cloudant.newInstance();
DeleteDocumentOptions documentOptions =
new DeleteDocumentOptions.Builder()
.db("events")
.docId("0007241142412418284")
.rev("2-9a0d1cd9f40472509e9aac6461837367")
.build();
DocumentResult response =
service.deleteDocument(documentOptions).execute()
.getResult();
System.out.println(response);
const { CloudantV1 } = require('@ibm-cloud/cloudant');
const service = CloudantV1.newInstance({});
service.deleteDocument({
db: 'events',
docId: '0007241142412418284',
rev: '2-9a0d1cd9f40472509e9aac6461837367'
}).then(response => {
console.log(response.result);
});
from ibmcloudant.cloudant_v1 import CloudantV1
service = CloudantV1.new_instance()
response = service.delete_document(
db='events',
doc_id='0007241142412418284',
rev='2-9a0d1cd9f40472509e9aac6461837367'
).get_result()
print(response)
deleteDocumentOptions := service.NewDeleteDocumentOptions(
"events",
"0007241142412418284",
)
deleteDocumentOptions.SetRev("2-9a0d1cd9f40472509e9aac6461837367")
documentResult, response, err := service.DeleteDocument(deleteDocumentOptions)
if err != nil {
panic(err)
}
b, _ := json.MarshalIndent(documentResult, "", " ")
fmt.Println(string(b))
Das vorherige Go-Beispiel erfordert den folgenden Importblock:
import (
"encoding/json"
"fmt"
"github.com/IBM/cloudant-go-sdk/cloudantv1"
)
Für alle Go-Beispiele muss das Objekt service initialisiert sein. Weitere Informationen finden Sie in den Beispielen im Abschnitt 'Authentifizierung' in der API-Dokumentation.
Hier sehen Sie eine Beispielantwort nach einer erfolgreichen Löschanfrage.
{
"id": "exampleid",
"ok": true,
"rev": "2-056f5f44046ecafc08a2bc2b9c229e20"
}