文書の削除

ここに示す手順は、文書の削除方法を示しています。

  1. 照会ストリングに文書の最新の _rev を指定して DELETE 要求を送信します。
  2. コマンド https://$ACCOUNT.cloudant.com/$DATABASE/$DOCUMENT_ID を実行します。 応答には、文書の ID と新しいリビジョンが含まれています。削除が失敗した場合には、エラー・メッセージが含まれています。

最新の _rev を指定しなかった場合、 IBM Cloudant は 409エラー を返します。 このエラーは、既に他のクライアントが変更したデータを上書きしないようにするためのものです。 書き込み 定足数を 満たせない場合、 202 レスポンスが返される。

指定した文書は、IBM Cloudant で完全に削除されるわけではありません。 そうではなく、文書に関する基本情報が入ったトゥームストーンが残されます。 トゥームストーンは、削除アクションをデータベースの他のコピーに複製するために必要です。 トゥームストーンはデータベース内に永久に残されるので、 新規文書を作成して削除すると、データベースのディスク・スペースの使用量が増加します。 これによって、ID による文書検索に使用される 1 次索引の照会時間も増加する可能性があります。

以下の手順は、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"
}