Excluindo um documento
As etapas mostradas aqui demonstram como excluir um documento.
- Envie uma solicitação
DELETE
com o_rev
mais recente do documento na sequência de consulta. - Execute o comando a seguir
https://$ACCOUNT.cloudant.com/$DATABASE/$DOCUMENT_ID
. A resposta conterá o ID e a nova revisão do documento ou uma mensagem de erro se a exclusão tiver falhado.
Se você falhar em fornecer o mais recente _rev
, IBM Cloudant responderá com um erro 409. Esse erro impede que você sobrescreva dados mudados por outros
clientes. Se a gravação quorum não puder ser atendida, uma resposta 202
será devolvida.
O IBM Cloudant não exclui completamente o documento especificado. Em vez disso, ele deixa um tombstone com informações básicas sobre o documento. O tombstone é necessário para que a ação de exclusão possa ser replicada para outras cópias do banco de dados. Como os tombstones ficam no banco de dados por tempo indeterminado, criar novos documentos e excluí-los aumenta o uso de espaço em disco de um banco de dados. Eles também podem aumentar o tempo de consulta para o índice primário, que é usado para consultar documentos por seu ID.
As etapas a seguir mostram como excluir uma solicitação usando HTTP.
-
Envie uma solicitação
DELETE
com o_rev
mais recente do documento na string de consulta usando HTTP. -
Execute o comando a seguir
DELETE /$DATABASE/$DOCUMENT_ID?rev=$REV HTTP/1.1
.
Os exemplos de código a seguir mostram como excluir um documento usando a linha de comandos.
# 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))
O exemplo do Go anterior requer o bloco de importação a seguir:
import (
"encoding/json"
"fmt"
"github.com/IBM/cloudant-go-sdk/cloudantv1"
)
Todos os exemplos do Go requerem que o objeto service
seja inicializado. Para obter mais informações, consulte a seção Autenticação da documentação
da API para exemplos.
Veja uma resposta de exemplo após uma solicitação de exclusão bem-sucedida.
{
"id": "exampleid",
"ok": true,
"rev": "2-056f5f44046ecafc08a2bc2b9c229e20"
}