您可以使用 N1QL 更新 Statments google for Couchbase N1QL
UPDATE 使用更新的值替换已存在的文档。
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.
use-keys-clause:指定要更新的数据项的键。选修的。键可以是任何表达式。
set-clause:指定要更改的属性的值。
unset-clause:从文档中删除指定的属性。
update-for:update for 子句使用 FOR 语句迭代嵌套数组,并为数组中的每个匹配元素设置或取消设置给定属性。
where-clause:指定数据更新需要满足的条件。选修的。
limit-clause:指定可以更新的最大对象数。该子句必须以非负整数作为其上限。选修的。
Returning-clause:返回您在 result_expression 中指定的更新的数据。
RBAC 权限
执行 UPDATE 语句的用户必须对目标键空间具有查询更新权限。如果语句中有任何需要读取数据的子句,例如 SELECT 子句或 RETURNING 子句,则还需要对各个子句中引用的键空间具有 Query Select 权限。有关用户角色的更多详细信息,请参阅授权。
例如,
要执行以下语句,用户必须具有查询更新权限travel-sample
.
UPDATE `travel-sample` SET foo = 5
要执行以下语句,用户必须具有查询更新权限travel-sample
和查询选择权限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”数组中的“性别”属性。
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": "[email protected] /cdn-cgi/l/email-protection",
"fname": "Dave",
"hobbies": [
"golf",
"surfing"
],
"lname": "Smith",
"relation": "friend",
"title": "Mr.",
"type": "contact"
}
}
]
从版本 4.5.1 开始,UPDATE 语句已改进为 SET 嵌套数组元素。 FOR 子句得到增强,可以计算函数和表达式,新语法支持多个嵌套 FOR 表达式来访问和更新嵌套数组中的字段。通过链接 FOR 子句支持其他数组级别。
Example
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;