我正在努力解决update-for
N1QL查询
我的文档如下:
{
"invalidityReasons": {
"AU": [
"ANCESTOR_DEACTIVATED_OR_INVALID"
],
"BE": [
"ANCESTOR_DEACTIVATED_OR_INVALID"
],
"BG": []
}
"metadata": {
"configurations": {
"AU": {
"enabled": true,
},
"BE": {
"enabled": false,
},
"BG": {
"enabled": true,
}
}
}
}
我正在尝试做的事情:
所有国家/地区具有无效原因“ ANCESTOR_DEACTIVATED_OR_INVALID”并被激活(即“启用”:在元数据配置中为true)=>停用该国家(即“启用”:false)>
在上面的示例中,应停用AU(澳大利亚)
我现在的位置
这意味着在我的脑海:
所以update-for
看起来还不错,但我无法使其正常工作:
update `data` t
SET t.metadata.configurations.[country].enabled = false
FOR country IN OBJECT_NAMES(t.metadata.configurations)
when t.metadata.configurations.[country].enabled = true
and array_contains(t.invalidityReasons.[country], 'ANCESTOR_DEACTIVATED_OR_INVALID') end;
Couchbase宣布发生突变,但我的国家仍处于激活状态
你有什么主意吗?
我正在使用Couchbase EE 5.1.1
谢谢, 欢呼,
朱尔斯
答案 0 :(得分:1)
应该可以。以下内容可以在单个文档上正常工作。
insert into default values("11",{ "invalidityReasons": { "AU": [ "ANCESTOR_DEACTIVATED_OR_INVALID" ], "BE": [ "ANCESTOR_DEACTIVATED_OR_INVALID" ], "BG": [] }, "metadata": { "configurations": { "AU": { "enabled": true }, "BE": { "enabled": false }, "BG": { "enabled": true } } } } );
SELECT * FROM default USE KEYS "11";
update `default` t USE KEYS "11"
SET t.metadata.configurations.[country].enabled = false
FOR country IN OBJECT_NAMES(t.metadata.configurations)
when t.metadata.configurations.[country].enabled = true
and array_contains(t.invalidityReasons.[country], 'ANCESTOR_DEACTIVATED_OR_INVALID') end;
SELECT * FROM default USE KEYS "11";