文書の削除
ここに示す手順は、文書の削除方法を示しています。
- 照会ストリングに文書の最新の
_revを指定してDELETE要求を送信します。 - コマンド
https://$ACCOUNT.cloudant.com/$DATABASE/$DOCUMENT_IDを実行します。 応答には、文書の ID と新しいリビジョンが含まれています。削除が失敗した場合には、エラー・メッセージが含まれています。
最新の _rev を指定しなかった場合、 IBM Cloudant は 409エラー を返します。 このエラーは、既に他のクライアントが変更したデータを上書きしないようにするためのものです。 書き込み 定足数を 満たせない場合、 202 レスポンスが返される。
指定した文書は、IBM Cloudant で完全に削除されるわけではありません。 そうではなく、文書に関する基本情報が入ったトゥームストーンが残されます。 トゥームストーンは、削除アクションをデータベースの他のコピーに複製するために必要です。 トゥームストーンはデータベース内に永久に残されるので、 新規文書を作成して削除すると、データベースのディスク・スペースの使用量が増加します。 これによって、ID による文書検索に使用される 1 次索引の照会時間も増加する可能性があります。
以下の手順は、HTTP を使用して文書を削除する方法を示しています。
-
HTTP を使用して、照会ストリングに文書の最新の
_revを指定したDELETE要求を送信します。 -
コマンド
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"
}