ドキュメントへのパッチ適用

Azure Cosmos DB は、グローバル分散型のマルチモデル データベースであり、複数の API でサポートされています。 この記事では、Azure Cosmos DB 用の SQL API について説明します。

この Patch Document 操作では、1 つのドキュメント内の特定のファイル/プロパティに対するパス レベルの更新が行われます。

Request

Method 要求 URI 説明
PATCH https://{databaseaccount}.documents.azure.com/dbs/{db-id}/colls/{coll-id}/docs/{id} {databaseaccount} は、サブスクリプションの下に作成された Azure Cosmos DB アカウントの名前です。 {db-id} 値は、システムによって生成された ID (rid) ではなく、データベースのユーザーが生成した名前/ID です。 {coll-id} 値は、ドキュメントを含むコレクションの名前です。 id は、ドキュメント内の {id} の値です

ヘッダー

すべての Azure Cosmos DB 要求 で使用されるヘッダーについては、「共通の Azure Cosmos DB REST 要求ヘッダー」を参照してください。

ヘッダー 必須 Type 説明
x-ms-documentdb-partitionkey 省略可能 Array 修正プログラムを適用するドキュメントのパーティション キーの値。 partitionKey 定義を使用してコレクションが作成される場合にのみ、 と を含む必要があります。

Body

プロパティ 必須 Type 説明
operations 必須 Array Patch では、 配列として渡す必要がある 1 つまたは複数の操作がサポートされます

1 回の操作

{
  "operations": [
    {
      "op": "set",
      "path": "/Parents/0/FamilyName",
      "value": "Bob"
    }
  ]
}  

複数の操作

{
   "operations":[
      {
         "op":"add",
         "path":"/Parents/0/ZipCode",
         "value":80000
      },
       {
      "op": "set",
       "path": "/Parents/0/FamilyName",
       "value": "Bob"
      }
   ]
}

条件付きパッチ操作

{
   "condition":"from c where c.Address.ZipCode ='98101' ",
   "operations":[
      {
         "op":"replace",
         "path":"/Address/ZipCode",
         "value":98107
      }
   ]
}

[応答]

修正プログラムが適用されたドキュメントの本文を返します。

ヘッダー

すべての Azure Cosmos DB 応答 によって返されるヘッダーについては、「共通の Azure Cosmos DB REST 応答ヘッダー」を参照してください。

プロパティ Type 説明
x-ms-request-charge Number 操作で使用された要求ユニットの数。
x-ms-session-token String セッション レベルの整合性で使用される文字列トークン。 クライアントは、この値を保存し、セッション整合性のために後続の読み取り要求用に設定する必要があります。
Content-Location String 渡されるパッチ コンテンツの URL。

状態コード

次の表に、この操作で返される一般的なステータス コードを示します。 状態コードの完全な一覧については、「 HTTP 状態コード」を参照してください。

HTTP 状態コード 説明
200 OK 操作に成功しました。
400 Bad Request JSON の本文が無効です。
412 Precondition Failed 指定された事前条件が満たされていません

Body

プロパティ 説明
_解消 これは、システムによって生成されるプロパティです。 リソース ID (_rid) は、リソース モデルのリソース スタックごとに階層化される一意識別子です。 ドキュメント リソースの配置と移動のために内部使用されます。
_Ts これは、システムによって生成されるプロパティです。 リソースの最終更新タイムスタンプを示します。 値は、タイムスタンプです。
_自己 これは、リソースの URI を持つシステム生成のプロパティです。
_Etag これは、オプティミスティック コンカレンシー制御に必要なリソース etag を指定するシステム生成プロパティです。
_添付 ファイル これは、添付ファイル リソースのアドレス指定可能なパスを指定する、システムによって生成されたプロパティです。
{
    "id": "Andersen.1",
    "LastName": "Andersen",
    "Parents": [
        {
            "FamilyName": "Bob",
            "FirstName": "Thomas"
        },
        {
            "FamilyName": null,
            "FirstName": "Mary Kay"
        }
    ],
    "Children": [
        {
            "FamilyName": null,
            "FirstName": "Henriette Thaulow",
            "Gender": "female",
            "Grade": 5,
            "Pets": [
                {
                    "GivenName": "Fluffy"
                }
            ]
        }
    ],
    "Address": {
        "State": "WA",
        "County": "King",
        "City": "Seattle"
    },
    "IsRegistered": false,
    "_rid": "2pFqAMMTYY8BAAAAAAAAAA==",
    "_self": "dbs/2pFqAA==/colls/2pFqAMMTYY8=/docs/2pFqAMMTYY8BAAAAAAAAAA==/",
    "_etag": "\"00000000-0000-0000-d40e-691edfa901d7\"",
    "_attachments": "attachments/",
    "_ts": 1636313638
}

PATCH https://querydemo.documents.azure.com/dbs/FamilyDatabase/colls/FamilyContainer/docs/Andersen.1 HTTP/1.1  
x-ms-documentdb-partitionkey: ["Andersen"]  
x-ms-date: Tue, 29 Mar 2016 02:28:29 GMT  
Authorization: type%3dmaster%26ver%3d1.0%26sig%3d92WMAkQv0Zu35zpKZD%2bcGSH%2b2SXd8HGxHIvJgxhO6%2fs%3d
Content-Type:application/json_patch+json
Cache-Control: no-cache  
User-Agent: Microsoft.Azure.DocumentDB/2.16.12  
x-ms-version: 2015-12-16  
Accept: application/json  
Host: querydemo.documents.azure.com  
Cookie: x-ms-session-token#0=602; x-ms-session-token=602  
Content-Length: calculated when request is sent  
Connection: keep-alive
  
{"operations":[{ "op" :"set", "path":"/Parents/0/FamilyName","value":"Bob" }]}  
HTTP/1.1 200 OK  
Cache-Control: no-store, no-cache  
Pragma: no-cache  
Transfer-Encoding: chunked  
Content-Type: application/json 
Content-Location : https://querydemo.documents.azure.com/dbs/FamilyDatabase/colls/FamilyContainer/docs/Andersen.1
Server: Microsoft-HTTPAPI/2.0  
Strict-Transport-Security: max-age=31536000  
x-ms-last-state-change-utc: Fri, 25 Mar 2016 22:39:02.501 GMT  
etag: "00003200-0000-0000-0000-56f9e84d0000"  
x-ms-resource-quota: documentSize=10240;documentsSize=10485760;collectionSize=10485760;  
x-ms-resource-usage: documentSize=0;documentsSize=1;collectionSize=1;  
x-ms-schemaversion: 1.1  
x-ms-alt-content-path: dbs/testdb/colls/testcoll  
x-ms-quorum-acked-lsn: 602  
x-ms-current-write-quorum: 3  
x-ms-current-replica-set-size: 4  
x-ms-request-charge: 12.38  
x-ms-serviceversion: version=1.6.52.5  
x-ms-activity-id: 856acd38-320d-47df-ab6f-9761bb987668  
x-ms-session-token: 0:603  
Set-Cookie: x-ms-session-token#0=603; Domain=querydemo.documents.azure.com; Path=/dbs/1KtjAA==/colls/1KtjAImkcgw=  
Set-Cookie: x-ms-session-token=603; Domain=querydemo.documents.azure.com; Path=/dbs/1KtjAA==/colls/1KtjAImkcgw=  
x-ms-gatewayversion: version=1.6.52.5  
Date: Tue, 29 Mar 2016 02:28:30 GMT  
  
{
    "id": "Andersen.1",
    "LastName": "Andersen",
    "Parents": [
        {
            "FamilyName": "Bob",
            "FirstName": "Thomas"
        },
        {
            "FamilyName": null,
            "FirstName": "Mary Kay"
        }
    ],
    "Children": [
        {
            "FamilyName": null,
            "FirstName": "Henriette Thaulow",
            "Gender": "female",
            "Grade": 5,
            "Pets": [
                {
                    "GivenName": "Fluffy"
                }
            ]
        }
    ],
    "Address": {
        "State": "WA",
        "County": "King",
        "City": "Seattle"
    },
    "IsRegistered": false,
    "_rid": "2pFqAMMTYY8BAAAAAAAAAA==",
    "_self": "dbs/2pFqAA==/colls/2pFqAMMTYY8=/docs/2pFqAMMTYY8BAAAAAAAAAA==/",
    "_etag": "\"00000000-0000-0000-d464-a585d94d01d7\"",
    "_attachments": "attachments/",
    "_ts": 1636350676
}
  

参照