删除文档

此处显示的步骤演示了如何删除文档。

  1. 在查询字符串中发送包含文档的最新 _revDELETE 请求。
  2. 运行以下命令: https://$ACCOUNT.cloudant.com/$DATABASE/$DOCUMENT_ID。 响应包含文档的标识和新修订版,或者包含错误消息 (如果删除失败)。

如果无法提供最新的 _rev,那么 IBM Cloudant 将以 409 error响应。 此错误可防止您覆盖由其他客户机更改的数据。 如果无法满足写入 quorum ,那么将返回 202 响应

IBM Cloudant 不会完全删除指定的文档。 相反,它会留下 墓碑 ,其中包含有关文档的基本信息。 需要墓碑,以便可以将删除操作复制到数据库的其他副本。 由于墓碑无限期地保留在数据库中,因此创建新文档并将其删除会增加数据库的磁盘空间使用量。 它们还可能会增加主索引的查询时间,该主索引用于按其标识查找文档。

以下步骤显示如何使用 HTTP 删除请求。

  1. 使用 HTTP 在查询字符串中使用文档的最新 _rev 发送 DELETE 请求。

  2. 运行以下命令: DELETE /$DATABASE/$DOCUMENT_ID?rev=$REV HTTP/1.1

以下代码示例显示如何使用命令行来删除文档。

# 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))

先前的 Go 示例需要以下导入块:

import (
   "encoding/json"
   "fmt"
   "github.com/IBM/cloudant-go-sdk/cloudantv1"
)

所有 Go 示例都需要初始化 service 对象。 有关更多信息,请参阅 API 文档的 认证部分 以获取示例。

请参阅成功删除请求后的示例响应。

{
  "id": "exampleid",
  "ok": true,
  "rev": "2-056f5f44046ecafc08a2bc2b9c229e20"
}