例: JSONコレクション表の更新

UPDATE文を使用して、JSONコレクション表のデータを更新できます。UPDATE操作は、固定スキーマ表と同様に機能します。

ショッピング・アプリケーション用に作成されたJSONコレクション表の行について考えてみます。

{"contactPhone":"1617114988","address":{"Dropbox":"Presidency College","city":"Kansas City","state":"Alabama","zip":95065},"cart":[{"item":"A4 sheets","priceperunit":500,"quantity":2},{"item":"Mobile Holder","priceperunit":700,"quantity":1}],"email":"lorphil@usmail.com","firstName":"Lorenzo","lastName":"Phil","notify":"yes","orders":[{"EstDelivery":"2023-11-15","item":"AG Novels 1","orderID":"101200,"priceperunit":950,"status":"Preparing to dispatch"},{"EstDelivery":"2023-11-01","item":"Wall paper","orderID":"101200,"priceperunit":950,"status":"Transit"}]}

例7-16 買物客のデータの不注意なエラーの修正

買物客のデータを修正するには、次のようにUpdate句を使用します。

UPDATE storeAcct s
SET s.notify = "no",
REMOVE s.cart [$element.item = "A4 sheets"],
PUT s.address {"Block" : "C"},
SET s.orders[0].EstDelivery =  "2023-11-17",
ADD s.cart 1 {"item":"A3 sheets", "priceperunit":600, "quantity":2}
WHERE s.contactPhone = "1617114988"

説明:前述の例では、storeAcctテーブル内の買物客のレコードを更新して、不注意なエラーをいくつか修正しています。この修正では、storeAcct表の様々なフィールドを更新する必要があります。SET句によって、買物客のデータ・レコードの通知設定が非アクティブ化されます。REMOVE句は、カート内のいずれかのitemフィールドがA4 sheetsと一致するかどうかをチェックし、対応する要素をorders配列から削除します。PUT句によって、配送地域を示す新しいJSONフィールドが追加されます。2番目のSET句は、深くネストされたEstDeliveryフィールドにアクセスし、orders配列の最初のアイテムの予定配送日を更新します。ADD句によって、cartフィールドに新しい要素が挿入され、アイテムがリストに追加されます。

更新された買物客のデータをフェッチすると、次の出力が表示されます。

{"contactPhone":"1617114988","address":{"Block":"C","Dropbox":"Presidency College","city":"Kansas City","state":"Alabama","zip":95065},"cart":[{"item":"Mobile Holder","priceperunit":700,"quantity":1},{"item":"A3 sheets","priceperunit":600,"quantity":2}],"email":"lorphil@usmail.com","firstName":"Lorenzo","lastName":"Phil","notify":"no","orders":[{"EstDelivery":"2023-11-17","item":"AG Novels 1","priceperunit":950,"status":"Preparing to dispatch"},{"EstDelivery":"2023-11-01","item":"Wall paper","priceperunit":950,"status":"Transit"}]}