Dokument löschen

Die hier gezeigten Schritte veranschaulichen, wie man ein Dokument löscht.

  1. Senden Sie eine Anfrage an DELETE mit der neuesten Version des Dokuments _rev im Abfrage-String.
  2. Führen Sie den Befehl https://$ACCOUNT.cloudant.com/$DATABASE/$DOCUMENT_ID aus. 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.

  1. Senden Sie eine DELETE-Anfrage mit dem neuesten _rev des Dokuments im Abfrage-String, indem Sie HTTP verwenden.

  2. Führen Sie den Befehl DELETE /$DATABASE/$DOCUMENT_ID?rev=$REV HTTP/1.1 aus.

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"
}