【发布时间】:2020-02-24 12:27:28
【问题描述】:
我正在尝试将 Couchbase 文档从一种结构更新到另一种结构 这是当前的结构
{
"config": {
"160x600": {
"siteId": "123455677"
},
"300x250": {
"siteId": "123455677"
},
"300x600": {
"siteId": "123455677"
}
}
}
想要的结构是
{
"config": {
"160x600": {
"siteId": "123455677",
"size":[160,600]
},
"300x250": {
"siteId": "123455677",
"size" : [300,250]
},
"300x600": {
"siteId": "123455677",
"size": [300,600]
}
}
}
基本上我想遍历 config 中的键,将每个键拆分为 'x' 并将结果数组作为值分配给 config[key] 中的“size”。
这是我尝试过的 N1QL 查询(显然没有用,因此这里有这个问题);
update AppBucket a set a.config[`size`].size = split(size, `x`) for size in OBJECT_NAMES(a.config) end
where meta(a).id like 'cnfg::40792';
提前致谢。
【问题讨论】:
-
必须是N1QL吗?如果您事先知道文档键,那么使用键值 API 进行这种复杂的 JSON 处理可能会更容易,也可能更高效。
-
这样的文档有数百个,因此手动更新它们将是一项艰巨的任务。我希望它是否可以通过 N1QL 查询来解决,否则最后的手段是编写一个服务来获取所有这些文档,操作它们并在 couchBase 中更新它们。谢谢。