N1QL update Statments google for Couchbase を使用できます N1QL UPDATE は、既存のドキュメントを更新された値に置き換えます。
アップデート:
UPDATE keyspace-ref [use-keys-clause] [set-clause] [unset-clause] [where-clause] [limit-clause] [returning-clause]
設定句:
SET path = expression [update-for] [ , path = expression [update-for] ]*
更新対象:
FOR variable (IN | WITHIN) path (, variable (IN | WITHIN) path)* [WHEN condition ] END
設定解除節:
UNSET path [update-for] (, path [ update-for ])*
keyspace-ref: Specifies the keyspace for which to update the document.
次の方法で、オプションの namespace-name を keyspace-name に追加できます。
namespace-name:keyspace-name.
use-keys-clause: 更新するデータ項目のキーを指定します。オプション。キーは任意の式にすることができます。
set-clause: 変更する属性の値を指定します。
unset-clause: ドキュメントから指定された属性を削除します。
update-for: update for 句は、FOR ステートメントを使用してネストされた配列を反復処理し、配列内の一致するすべての要素に対して指定された属性を SET または UNSET します。
where-clause: データを更新するために満たす必要がある条件を指定します。オプション。
limit-clause: 更新できるオブジェクトの最大数を指定します。この句には、上限として負でない整数を指定する必要があります。オプション。
return-clause: result_expression で指定されたとおりに更新したデータを返します。
RBAC 権限
UPDATE ステートメントを実行するユーザーは、ターゲット キースペースに対する Query Update 権限を持っている必要があります。SELECT 句や RETURNING 句など、データの読み取りが必要な句がステートメントに含まれている場合は、それぞれの句で参照されるキースペースに対するクエリ選択権限も必要です。ユーザー ロールの詳細については、承認を参照してください。
例えば、
次のステートメントを実行するには、ユーザーは に対するクエリ更新権限を持っている必要がありますtravel-sample
。
UPDATE `travel-sample` SET foo = 5
次のステートメントを実行するには、ユーザは に対する Query Update 権限と に対するtravel-sample
Query Select 権限を持っている必要がありbeer-sample
ます。
UPDATE `travel-sample`
SET foo = 9
WHERE city = (SELECT raw city FROM `beer-sample` WHERE type = "brewery"
To execute the following statement, user must have the Query Update privilege on `travel-sample` and Query Select privilege on `travel-sample`.
UPDATE `travel-sample`
SET city = “San Francisco”
WHERE lower(city) = "sanfrancisco"
RETURNING *
Example
次のステートメントは、製品の「タイプ」「odwalla-juice1」を「product-juice」に変更します。
UPDATE product USE KEYS "odwalla-juice1" SET type = "product-juice" RETURNING product.type
"results": [
{
"type": "product-juice"
}
]
このステートメントは、「odwalla-juice1」キーを持つドキュメントの「product」キースペースから「type」属性を削除します。
UPDATE product USE KEYS "odwalla-juice1" UNSET type RETURNING product.*
"results": [
{
"productId": "odwalla-juice1",
"unitPrice": 5.4
}
]
このステートメントは、チュートリアル キースペース内のキー "dave" を持つドキュメントの "children" 配列内の "gender" 属性を設定解除します。
UPDATE tutorial t USE KEYS "dave" UNSET c.gender FOR c IN children END RETURNING t
"results": [
{
"t": {
"age": 46,
"children": [
{
"age": 17,
"fname": "Aiden"
},
{
"age": 2,
"fname": "Bill"
}
],
"email": "dave@gmail.com",
"fname": "Dave",
"hobbies": [
"golf",
"surfing"
],
"lname": "Smith",
"relation": "friend",
"title": "Mr.",
"type": "contact"
}
}
]
バージョン 4.5.1 以降、UPDATE ステートメントは、ネストされた配列要素を設定するように改善されました。FOR 句は、関数と式を評価するように拡張され、新しい構文は、ネストされた配列内のフィールドにアクセスして更新するために、ネストされた複数の FOR 式をサポートします。FOR句を連鎖させることにより、追加の配列レベルがサポートされます。
例
UPDATE default
SET i.subitems = ( ARRAY OBJECT_ADD(s, 'new', 'new_value' )
FOR s IN i.subitems END )
FOR s IN ARRAY_FLATTEN(ARRAY i.subitems
FOR i IN items END, 1) END;