gpt4 book ai didi

couchbase - 使用 Couchbase N1QL 更新列表的多个元素

转载 作者:行者123 更新时间:2023-12-02 00:59:04 25 4
gpt4 key购买 nike

上下文

我的 couchbase 文档中有一个节点看起来像这样:

"metadata": {
"configurations": {
"AU": {
"enabled": false,
"order": 2147483647
},
"BE": {
"enabled": false,
"order": 2147483647
},
"BG": {
"enabled": false,
"order": 2147483647
} ...
}
}

它与国家 unicode 列表及其“启用”状态一起出现

我想要实现的目标

更新此文档以将其标记为对所有国家/地区禁用(“启用”= false)

为了做到这一点,我希望这种语法能够起作用(假设我正在尝试更新 ID 为 03c53a2d-6208-4a35-b9ec-f61e74d81dab 的文档)

UPDATE `data` t 
SET country.enabled = false
FOR country IN t.metadata.configurations END
where meta(t).id = "03c53a2d-6208-4a35-b9ec-f61e74d81dab";

但它似乎并没有改变我文档中的任何内容

有什么提示吗? :)

谢谢大家,

最佳答案

由于字段名称是动态的,您可以使用 OBJECT_NAMES() 生成字段名称并在字段更新期间使用它。

UPDATE data t USE KEYS "03c53a2d-6208-4a35-b9ec-f61e74d81dab" 
SET t.metadata.configurations.[v].enabled = false FOR v IN OBJECT_NAMES(t.metadata.configurations) END ;

在上面的示例中,OBJECT_NAMES(t.metadata.configurations) 生成 ["AU", "BE","BG"]当引用 JSON 的字段时 .[v] 它评估 v 并且值成为字段。因此在循环构造期间 t.metadata.configurations.[v].enabled 变为

t.metadata.configurations.`AU`.enabled, 
t.metadata.configurations.`BE`.enabled,
t.metadata.configurations.`BG`.enabled

取决于 v 的值。

关于couchbase - 使用 Couchbase N1QL 更新列表的多个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51982839/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com