IBM Cloud Docs
一括操作

一括操作

一括文書 API を使用すると、1 つの要求で同時に複数の文書を作成または更新できます。 基本的な操作は単一の文書を作成または更新するのと似ていますが、文書の構造と情報をまとめる点が異なります。

新規文書を作成するときには、文書 ID はオプションです。 既存文書を更新するときには、文書 ID、リビジョン情報、および新規文書の値を指定する必要があります。

一括操作の特殊なケースは、_bulk_get エンドポイントです。

一括要求の構造

挿入と更新のどちらについても、要求の JSON 文書の基本構造には、以下のフィールドが含まれます。

一括請求の基本構造
フィールド 説明 タイプ オプション
docs 文書オブジェクトのリスト オブジェクトの配列 いいえ

new_edits フィールドは使用しないのがベストです。 デフォルトでは、競合が存在すれば、文書の更新は失敗してクライアントにエラーが返されます。 しかし、このオプションを使用すると、競合をチェックせずに文書リビジョンが適用されるので、結局、意図せず多くの競合が発生しやすくなります。

docs 配列の各オブジェクトの構造を次に示します。

docs配列オブジェクトの構造
フィールド 説明 タイプ オプション
_id 文書 ID ストリング 新規文書の場合にのみオプション。 それ以外の場合は必須です。
_rev 文書のリビジョン ストリング 更新および削除の場合は必須。新規文書の場合は使用しません。
_deleted 文書を削除する必要があるかどうかを指定します。 ブール値 (オプション) デフォルト値は false です。

パーティション・データベースの場合は、_id フィールドがパーティション・キーの部分と文書キーの部分で構成されることを思い出してください。

HTTP を使用して複数の文書を作成、更新、または削除する例を以下に示します。

POST /$DATABASE/_bulk_docs HTTP/1.1
Content-Type: application/json

コマンド・ラインを使用して複数の文書を作成、更新、または削除する例を以下に示します。

curl -H "Authorization: Bearer $API_BEARER_TOKEN" -X POST "$SERVICE_URL/events/_bulk_docs" -H "Content-Type: application/json" --data '{ "docs": [ { "_id": "0007241142412418284", "type": "event", "userid": "abc123", "eventType": "addedToBasket", "productId": "1000042", "date": "2019-01-28T10:44:22.000Z" }, { "_id": "0008001142412418285", "type": "event", "userid": "def456", "eventType": "addedToBasket", "productId": "1000043", "date": "2019-01-28T12:30:00.000Z" } ], "new_edits": true }'
import com.ibm.cloud.cloudant.v1.Cloudant;
import com.ibm.cloud.cloudant.v1.model.BulkDocs;
import com.ibm.cloud.cloudant.v1.model.Document;
import com.ibm.cloud.cloudant.v1.model.DocumentResult;
import com.ibm.cloud.cloudant.v1.model.PostBulkDocsOptions;

import java.util.Arrays;
import java.util.List;

Cloudant service = Cloudant.newInstance();

Document eventDoc1 = new Document();
eventDoc1.setId("0007241142412418284");
eventDoc1.put("type", "event");
eventDoc1.put("userid", "abc123");
eventDoc1.put("eventType", "addedToBasket");
eventDoc1.put("productId", "1000042");
eventDoc1.put("date", "2019-01-28T10:44:22.000Z");

Document eventDoc2 = new Document();
eventDoc2.setId("0007241142412418285");
eventDoc2.put("type", "event");
eventDoc2.put("userid", "abc234");
eventDoc2.put("eventType", "addedToBasket");
eventDoc2.put("productId", "1000050");
eventDoc2.put("date", "2019-01-28T10:44:22.000Z");

BulkDocs bulkDocs = new BulkDocs.Builder()
    .docs(Arrays.asList(eventDoc1, eventDoc2))
    .build();

PostBulkDocsOptions bulkDocsOptions = new PostBulkDocsOptions.Builder()
    .db("events")
    .bulkDocs(bulkDocs)
    .build();

List<DocumentResult> response =
    service.postBulkDocs(bulkDocsOptions).execute()
        .getResult();

System.out.println(response);
const { CloudantV1 } = require('@ibm-cloud/cloudant');

const service = CloudantV1.newInstance({});

const eventDoc1 = {
   _id: '0007241142412418284',
   type: 'event',
   userid: 'abc123',
   eventType:'addedToBasket',
   productId: '1000042',
   date: '2019-01-28T10:44:22.000Z'
}

const eventDoc2 = {
   _id: '0007241142412418285',
   type: 'event',
   userid: 'abc234',
   eventType: 'addedToBasket',
   productId: '1000050',
   date: '2019-01-25T20:00:00.000Z'
}

const bulkDocs = {  docs: [eventDoc1, eventDoc2] }

service.postBulkDocs({
   db: 'events',
   bulkDocs: bulkDocs
}).then(response => {
   console.log(response.result);
});
from ibmcloudant.cloudant_v1 import Document, CloudantV1, BulkDocs

service = CloudantV1.new_instance()

event_doc_1 = Document(
   id="0007241142412418284",
   type="event",
   userid="abc123",
   eventType="addedToBasket",
   productId="1000042",
   date="2019-01-28T10:44:22.000Z"
)
event_doc_2 = Document(
   id="0007241142412418285",
   type="event",
   userid="abc234",
   eventType="addedToBasket",
   productId="1000050",
   date="2019-01-25T20:00:00.000Z"
)

bulk_docs = BulkDocs(docs=[event_doc_1, event_doc_2])

response = service.post_bulk_docs(
   db='events',
   bulk_docs=bulk_docs
).get_result()

print(response)
eventDoc1 := cloudantv1.Document{
   ID: core.StringPtr("0007241142412418284"),
}
eventDoc1.SetProperty("type", "event")
eventDoc1.SetProperty("userid", "abc123")
eventDoc1.SetProperty("eventType", "addedToBasket")
eventDoc1.SetProperty("productId", "1000042")
eventDoc1.SetProperty("date", "2019-01-28T10:44:22.000Z")

eventDoc2 := cloudantv1.Document{
   ID: core.StringPtr("0007241142412418285"),
}
eventDoc2.SetProperty("type", "event")
eventDoc2.SetProperty("userid", "abc234")
eventDoc2.SetProperty("eventType", "addedToBasket")
eventDoc2.SetProperty("productId", "1000050")
eventDoc2.SetProperty("date", "2019-01-25T20:00:00.000Z")

postBulkDocsOptions := service.NewPostBulkDocsOptions(
   "events",
)
bulkDocs, err := service.NewBulkDocs(
   []cloudantv1.Document{
    eventDoc1,
    eventDoc2,
   },
)
if err != nil {
   panic(err)
}

postBulkDocsOptions.SetBulkDocs(bulkDocs)

documentResult, response, err := service.PostBulkDocs(postBulkDocsOptions)
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"
   "github.com/IBM/go-sdk-core/v5/core"
)

すべての Go の例では、serviceオブジェクトを初期化する必要があります。 詳しくは、API 資料の認証セクションで例を参照してください。

1 つの一括要求で 3 つの文書を更新、作成、および削除する方法を示す JSON の例を以下に示します。

[
  {
    "id": "0007241142412418284",
    "ok": true,
    "rev": "1-5005d65514fe9e90f8eccf174af5dd64"
  },
  {
    "id": "0008001142412418285",
    "ok": true,
    "rev": "1-2d7810b054babeda4812b3924428d6d6"
  }
]

一括要求の応答

応答で受け取る HTTP 状況コードは、要求が完全に成功したか、部分的に成功したかを示しています。 応答本文自体には、その要求の各文書に関する詳細情報が入った配列があります。

HTTP 状況コード
コード 説明
201 要求は成功しましたが、この成功はすべての文書が更新されたことを意味するわけではありません。 応答本文を調べて、要求した各変更の状況を確認し、問題があれば対処してください。
202 1 つ以上の文書で、書き込みのクォーラムが満たされませんでした。

一括要求からの応答の例を以下に示します。

[
    {
    "ok":true,
    "id":"96f898f0-f6ff-4a9b-aac4-503992f31b01",
    "rev":"1-54dd23d6a630d0d75c2c5d4ef894454e"
    },
    {
    "ok":true,
    "id":"5a049246-179f-42ad-87ac-8f080426c17c",
    "rev":"1-0cde94a828df5cdc0943a10f3f36e7e5"
    },
    {
    "ok":true,
    "id":"d1f61e66-7708-4da6-aa05-7cbc33b44b7e",
    "rev":"1-a2b6e5dac4e0447e7049c8c540b309d6"
    }
]

文書の一括挿入

複数の文書を一括してデータベースに挿入するには、 データベースに追加する複数の文書を配列にした JSON 構造を渡す必要があります。 文書 ID は、ユーザーが文書ごとに指定することも、自動的に生成することもできます。

3 つの文書を一括挿入するための JSON の例を以下に示します。

{
	"docs": [
		 {
		  "name": "Nicholas",
		  "age": 45,
		  "gender": "male",
		  "_id": "96f898f0-f6ff-4a9b-aac4-503992f31b01",
		  "_attachments": {

		 	}
	  },
	  {
		  "name": "Taylor",
		  "age": 50,
		  "gender": "male",
		  "_id": "5a049246-179f-42ad-87ac-8f080426c17c",
		  "_attachments": {

		  }
	  },
	  {
		  "name": "Owen",
		  "age": 51,
		  "gender": "male",
		  "_id": "d1f61e66-7708-4da6-aa05-7cbc33b44b7e",
		  "_attachments": {

		  }
	  }
	]
}

一括挿入に成功した場合のリターンコードは 201 である。 返される構造の内容には、文書ごとに成功メッセージまたはその他の情報メッセージが示されています。

3 つの文書の一括挿入が成功した後の応答ヘッダーの例を以下に示します。

201 Created
Cache-Control: must-revalidate
Content-Length: 269
Content-Type: application/json
Date: Mon, 04 Mar 2013 14:06:20 GMT
server: CouchDB/1.0.2 (Erlang OTP/R14B)
x-couch-request-id: e8ff64d5

返される JSON には、リビジョンと ID の値を含め、作成された文書のリストが含まれています。

返される JSON の内容と構造は、一括更新に使用したトランザクションのセマンティクスによって異なります。 詳しくは、 一括文書のトランザクションのセマンティクスを参照してください。

文書の一括更新時に発生した競合エラーや検証エラーは、個別に対処する必要があります。 詳しくは、 一括文書の検証エラーと競合エラーを参照してください。

2 つの文書の一括挿入が成功した後の応答の内容の例を以下に示します。

[
    {
    "ok": true,
    "id": "id1",
    "rev": "2-402c81fee7ae6e723ff08bb166703a50"
    },
    {
    "id": "id2",
    "error": "conflict",
    "reason": "Document update conflict."
    }
]

文書の一括更新

文書の一括更新の手順は挿入の手順に似ていますが、一括更新の JSON ストリングには、すべての文書の文書 ID と現行リビジョンを指定する 必要がある点が異なります。

HTTP を使用して一括更新を実行する例を以下に示します。

POST /$DATABASE/_bulk_docs HTTP/1.1
Accept: application/json

コマンド・ラインを使用して一括更新を実行する例を以下に示します。

curl -H "Authorization: Bearer $API_BEARER_TOKEN" -X POST "$SERVICE_URL/events/_bulk_docs" -H "Content-Type: application/json" --data '{ "docs": [ { "_id": "0007241142412418284", "type": "event", "userid": "abc123", "eventType": "addedToBasket", "productId": "1000042", "date": "2019-01-28T10:44:22.000Z" }, { "_id": "0008001142412418285", "type": "event", "userid": "def456", "eventType": "addedToBasket", "productId": "1000043", "date": "2019-01-28T12:30:00.000Z" } ], "new_edits": true }'
import com.ibm.cloud.cloudant.v1.Cloudant;
import com.ibm.cloud.cloudant.v1.model.BulkDocs;
import com.ibm.cloud.cloudant.v1.model.Document;
import com.ibm.cloud.cloudant.v1.model.DocumentResult;
import com.ibm.cloud.cloudant.v1.model.PostBulkDocsOptions;

import java.util.Arrays;
import java.util.List;

Cloudant service = Cloudant.newInstance();

Document eventDoc1 = new Document();
eventDoc1.setId("0007241142412418284");
eventDoc1.put("type", "event");
eventDoc1.put("userid", "abc123");
eventDoc1.put("eventType", "addedToBasket");
eventDoc1.put("productId", "1000042");
eventDoc1.put("date", "2019-01-28T10:44:22.000Z");

Document eventDoc2 = new Document();
eventDoc2.setId("0007241142412418285");
eventDoc2.put("type", "event");
eventDoc2.put("userid", "abc234");
eventDoc2.put("eventType", "addedToBasket");
eventDoc2.put("productId", "1000050");
eventDoc2.put("date", "2019-01-28T10:44:22.000Z");

BulkDocs bulkDocs = new BulkDocs.Builder()
    .docs(Arrays.asList(eventDoc1, eventDoc2))
    .build();

PostBulkDocsOptions bulkDocsOptions = new PostBulkDocsOptions.Builder()
    .db("events")
    .bulkDocs(bulkDocs)
    .build();

List<DocumentResult> response =
    service.postBulkDocs(bulkDocsOptions).execute()
        .getResult();

System.out.println(response);
from ibmcloudant.cloudant_v1 import Document, CloudantV1, BulkDocs

service = CloudantV1.new_instance()

event_doc_1 = Document(
   id="0007241142412418284",
   type="event",
   userid="abc123",
   eventType="addedToBasket",
   productId="1000042",
   date="2019-01-28T10:44:22.000Z"
)
event_doc_2 = Document(
   id="0007241142412418285",
   type="event",
   userid="abc234",
   eventType="addedToBasket",
   productId="1000050",
   date="2019-01-25T20:00:00.000Z"
)

bulk_docs = BulkDocs(docs=[event_doc_1, event_doc_2])

response = service.post_bulk_docs(
   db='events',
   bulk_docs=bulk_docs
).get_result()

print(response)
eventDoc1 := cloudantv1.Document{
   ID: core.StringPtr("0007241142412418284"),
}
eventDoc1.SetProperty("type", "event")
eventDoc1.SetProperty("userid", "abc123")
eventDoc1.SetProperty("eventType", "addedToBasket")
eventDoc1.SetProperty("productId", "1000042")
eventDoc1.SetProperty("date", "2019-01-28T10:44:22.000Z")

eventDoc2 := cloudantv1.Document{
   ID: core.StringPtr("0007241142412418285"),
}
eventDoc2.SetProperty("type", "event")
eventDoc2.SetProperty("userid", "abc234")
eventDoc2.SetProperty("eventType", "addedToBasket")
eventDoc2.SetProperty("productId", "1000050")
eventDoc2.SetProperty("date", "2019-01-25T20:00:00.000Z")

postBulkDocsOptions := service.NewPostBulkDocsOptions(
   "events",
)
bulkDocs, err := service.NewBulkDocs(
   []cloudantv1.Document{
     eventDoc1,
     eventDoc2,
    },
)
if err != nil {
   panic(err)
}

postBulkDocsOptions.SetBulkDocs(bulkDocs)

documentResult, response, err := service.PostBulkDocs(postBulkDocsOptions)
if err != nil {
   panic(err)
}

b, _ := json.MarshalIndent(documentResult, "", "  ")
fmt.Println(string(b))
const { CloudantV1 } = require('@ibm-cloud/cloudant');

const service = CloudantV1.newInstance({});

const eventDoc1 = {
   _id: '0007241142412418284',
   type: 'event',
   userid: 'abc123',
   eventType:'addedToBasket',
   productId: '1000042',
   date: '2019-01-28T10:44:22.000Z'
}

const eventDoc2 = {
   _id: '0007241142412418285',
   type: 'event',
   userid: 'abc234',
   eventType: 'addedToBasket',
   productId: '1000050',
   date: '2019-01-25T20:00:00.000Z'
}

const bulkDocs = { docs: [eventDoc1, eventDoc2] };

service.postBulkDocs({
   db: 'events',
   bulkDocs: bulkDocs
}).then(response => {
   console.log(response.result);
});

前の Go の例では、以下のインポート・ブロックが必要です。

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

すべての Go の例では、serviceオブジェクトを初期化する必要があります。 詳しくは、API 資料の認証セクションで例を参照してください。

文書の一括更新を要求するための JSON 構造の例を以下に示します。

{
	"docs": [
	  {
		  "name": "Nicholas",
		  "age": 45,
		  "gender": "female",
		  "_id": "96f898f0-f6ff-4a9b-aac4-503992f31b01",
		  "_attachments": {

		  },
		  "_rev": "1-54dd23d6a630d0d75c2c5d4ef894454e"
	  },
	  {
		  "name": "Taylor",
		  "age": 50,
		  "gender": "female",
		  "_id": "5a049246-179f-42ad-87ac-8f080426c17c",
		  "_attachments": {

		  },
		  "_rev": "1-0cde94a828df5cdc0943a10f3f36e7e5"
	  },
	  {
		  "name": "Owen",
		  "age": 51,
		  "gender": "female",
		  "_id": "d1f61e66-7708-4da6-aa05-7cbc33b44b7e",
		  "_attachments": {

		  },
		  "_rev": "1-a2b6e5dac4e0447e7049c8c540b309d6"
	  }
	]
}

戻りの JSON 構造には、更新された文書と新しいリビジョンおよび ID の 情報がまとめられています。

一括更新の後に返される JSON 構造の例を以下に示します。

[
    {
        "ok":true,
        "id":"96f898f0-f6ff-4a9b-aac4-503992f31b01",
        "rev":"2-ff7b85665c4c297838963c80ecf481a3"  
    },
    {
        "ok":true,
        "id":"5a049246-179f-42ad-87ac-8f080426c17c",
        "rev":"2-9d5401898196997853b5ac4163857a29"
    },
    {
        "ok":true,
        "id":"d1f61e66-7708-4da6-aa05-7cbc33b44b7e",
        "rev":"2-cbdef49ef3ddc127eff86350844a6108"
    }
]

文書の一括削除

データベースから文書を削除するには、具体的な文書の ID とリビジョンに加えて "_deleted": true フィールドを指定する必要があります。

2 つの文書の一括削除を要求するための JSON 構造の例を下に示します。

戻りの JSON 構造には、削除された文書と新しいリビジョンおよび ID の 情報がまとめられています。

{
	"docs": [
	  {
		  "_id": "person34567",
		  "_deleted": true,
		  "_rev": "2-54dd23d6a630d0d75c2c5d4ef894454e"
	  },
	  {
		  "_id": "person568",
		  "_deleted": true,
		  "_rev": "3-8a245604ee5e829d7fbd1b456aed01ac"
	  }
    ]
}

一括削除の後に返される JSON 構造の例を以下に示します。

[
    {
        "ok": true,
        "id": "person34567",
        "rev": "3-674ccbb6ec6fe6d7ba0fb30a5eecf664"
    },
    {
        "ok": true,
        "id": "person568",
        "rev": "4-c6067e21e97557f54d29282461843037"
    }
]

一括文書のトランザクションのセマンティクス

リクエストが 202 応答を受け取った場合、 を受け取った場合、唯一確実なことは、ドキュメント・タスクのいくつかが完全に処理されたということです。 応答本文に、処理中に正常に挿入または更新された文書のリストが含まれています。

文書に新しい _rev パラメーターが存在していれば、 新しい文書リビジョンの作成に成功したということであるため、文書の更新に成功したことがわかります。

文書の更新が失敗した場合は、その文書に error タイプの conflict が 返されます。 この場合、新しいリビジョンは作成されていません。 その文書の更新を再試行するには、同じリビジョン・タグを指定して、もう一度文書の更新を送信する必要があります。

エラーが含まれている一括更新の応答の例を以下に示します。

[
	{
	  "id" : "FishStew",
	  "error" : "conflict",
	  "reason" : "Document update conflict."
	},
	{
	  "id" : "LambStew",
	  "error" : "conflict",
	  "reason" : "Document update conflict."
	},
	{
	  "id" : "7f7638c86173eb440b8890839ff35433",
	  "error" : "conflict",
	  "reason" : "Document update conflict."
	}
]

一括文書の検証エラーと競合エラー

_bulk_docs 操作で返される JSON は、元の要求送信に含まれていた文書ごとに 1 つの JSON 構造から成る配列で構成されます。 返された JSON 構造を調べて、元の要求で送信されたすべての文書が、 データベースに正常に追加されたことを確認する必要があります。

次の各表で、返される情報の構造について説明します。

返されるJSONの構造
フィールド 説明 タイプ
docs 文書オブジェクトのリスト オブジェクトの配列

docs 配列の各オブジェクトの構造を次に示します。

docs配列オブジェクトの構造
フィールド 説明 タイプ
id 文書 ID ストリング
error エラー・タイプ ストリング
reason 拡張理由付きエラー文字列 ストリング

エラーが発生したために文書 (または文書リビジョン) がデータベースに正常にコミットされなかった場合は、 error フィールドを確認してエラーのタイプと対処方法を判断する必要があります。 エラーのタイプは、 conflict または forbidden のどちらかです。

conflict

送信された文書が競合しています。 デフォルトの一括トランザクション・モードを使用していた場合、 新しいリビジョンは作成されていません。 データベースに文書を再送信する必要があります。

バルク文書インターフェースを使用する競合解決は、 競合 資料で概説されている解決手順と同じです。

forbidden

このエラー・タイプの項目は、送信時に文書に適用された検証ルーチンからエラーが返されたことを示しています。

検証関数の一部として forbidden エラーを生成する JavaScript の例を以下に示します。

throw({forbidden: 'invalid recipe ingredient'});

検証関数からのエラー・メッセージの例を以下に示します。

{
	"id" : "7f7638c86173eb440b8890839ff35433",
	"error" : "forbidden",
	"reason" : "invalid recipe ingredient"
}

_bulk_get エンドポイント

複数の文書について、取得できるすべての情報を取得することが必要になる場合があります。 The _bulk_get endpoint is similar to the _all_docs endpoint, but returns information about the requested documents only.

_bulk_docs エンドポイントと同様に、要求で渡す JSON 文書に、 対象のすべての文書を指定した配列を含めておきます。

HTTP を使用して文書情報の一括 GET 要求を実行する例を以下に示します。

POST /$DATABASE/_bulk_get HTTP/1.1
Accept: application/json

コマンド・ラインを使用して一括 GET 要求を実行する例を以下に示します。

curl -H "Authorization: Bearer $API_BEARER_TOKEN" -X POST "$SERVICE_URL/orders/_bulk_get" -H "Content-Type: application/json" --data '{
  "docs": [
    {
      "id": "order00067",
      "rev": "3-917fa2381192822767f010b95b45325b"
    },
    {
      "id": "order00067"
      "rev": "4-a5be949eeb7296747cc271766e9a498b"
    }
   ],
}'
import com.ibm.cloud.cloudant.v1.Cloudant;
import com.ibm.cloud.cloudant.v1.model.BulkGetQueryDocument;
import com.ibm.cloud.cloudant.v1.model.BulkGetResult;
import com.ibm.cloud.cloudant.v1.model.PostBulkGetOptions;

import java.util.ArrayList;
import java.util.List;

Cloudant service = Cloudant.newInstance();

String docId = "order00067";
List<BulkGetQueryDocument> bulkGetDocs = new ArrayList<>();

bulkGetDocs.add(
    new BulkGetQueryDocument.Builder()
        .id(docId)
        .rev("3-917fa2381192822767f010b95b45325b")
        .build());
bulkGetDocs.add(
    new BulkGetQueryDocument.Builder()
        .id(docId)
        .rev("4-a5be949eeb7296747cc271766e9a498b")
        .build());

PostBulkGetOptions bulkGetOptions = new PostBulkGetOptions.Builder()
    .db("orders")
    .docs(bulkGetDocs)
    .build();

BulkGetResult response =
    service.postBulkGet(bulkGetOptions).execute()
        .getResult();

System.out.println(response);
from ibmcloudant.cloudant_v1 import BulkGetQueryDocument, CloudantV1

service = CloudantV1.new_instance()

doc_id = 'order00067'
bulk_get_doc_1 = BulkGetQueryDocument(
    id=doc_id,
    rev='3-917fa2381192822767f010b95b45325b')
bulk_get_doc_2 = BulkGetQueryDocument(
    id=doc_id,
    rev='4-a5be949eeb7296747cc271766e9a498b')

response = service.post_bulk_get(
    db='orders',
    docs=[bulk_get_doc_1, bulk_get_doc_2],
).get_result()

print(response)
docID := "order00067"

bulkGetDocs := []cloudantv1.BulkGetQueryDocument{
   {
    ID: &docID,
    Rev: core.StringPtr("3-917fa2381192822767f010b95b45325b"),
   },
   {
    ID: &docID,
    Rev: core.StringPtr("4-a5be949eeb7296747cc271766e9a498b"),
   },
}

postBulkGetOptions := service.NewPostBulkGetOptions(
   "orders",
   bulkGetDocs,
)
bulkGetResult, response, err := service.PostBulkGet(postBulkGetOptions)
if err != nil {
   panic(err)
}

b, _ := json.MarshalIndent(bulkGetResult, "", "  ")
fmt.Println(string(b))
const service = CloudantV1.newInstance({});

const docId = 'order00067';

const bulkGetDoc1 = {
   id: docId,
   rev: '3-917fa2381192822767f010b95b45325b'
};
const bulkGetDoc2 = {
   id: docId,
   rev: '4-a5be949eeb7296747cc271766e9a498b'
};

const bulkGetDocs = [bulkGetDoc1, bulkGetDoc2];

const postBulkGetParams = {
   db: 'orders',
   docs: bulkGetDocs,
};

service.postBulkGet(postBulkGetParams)
   .then(response => {
    console.log(response.result);
   });

前の Go の例では、以下のインポート・ブロックが必要です。

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

すべての Go の例では、serviceオブジェクトを初期化する必要があります。 詳しくは、API 資料の認証セクションで例を参照してください。

POST エンドポイントに _bulk_get を使用する JSON オブジェクトの例を以下に示します。

{
	"docs": [
	  {
	  	"id": "doc1"
	  },
	  {
	  	"id": "doc3"
	  }
	]
}

一括取得の後に返される JSON 構造の例を以下に示します。

{                                                         
	"results": [                                                         
	  {                                                         
	  	"id": "doc01",
	  	"docs": [
	  		{
	  			"ok": {
	  				"_id": "doc01",
	  				"_rev": "1-f3751e2db1d92e13b0baa6bdeb874c8c",
	  				"simplekey": "somedata"
	  			}
	  		}
    	]
	  },
	  {
	  	"id": "doc03",
	  	"docs": [
	  		{
	  			"ok": {
	  				"_id": "doc03",
	  				"_rev": "2-d4fc04ef748edf305a8c0ed347f269c4",
	  				"simplekey": "somemoredata"
	  			}
	  		}
	  	]
	  }
	]
}