【发布时间】:2019-05-14 06:54:38
【问题描述】:
我正在尝试编写 N1QL 更新查询。我想从数组中删除那些“vs”值是什么的对象,比如说“k_a”。 这是我的示例文档。
{
"ADD": {
"k_2": [
{
"allowed": false,
"vs": "k_a"
},
{
"allowed": false,
"vs": "k_d"
}
],
"k_9": [
{
"allowed": false,
"vs": "k_f"
},
{
"allowed": true,
"vs": "k_a"
}
]
},
"REMOVE": {
"k_4": [
{
"allowed": true,
"vs": "k_a"
}
],
"k_7": [
{
"allowed": false,
"vs": "k_g"
},
{
"allowed": true,
"vs": "k_a"
}
]
}
}
我已经尝试过这个查询 -
UPDATE bucket_name sp
SET obj = ARRAY v FOR v IN obj WHEN v.vs != "k_a" END
FOR obj IN OBJECT_VALUES(sp.ADD) END WHERE META(sp).id = "SPT|O|789"
但可能我做错了什么。
这是我期待更新后的文件 -
{
"ADD": {
"k_2": [
{
"allowed": false,
"vs": "k_d"
}
],
"k_9": [
{
"allowed": false,
"vs": "k_f"
}
]
},
"REMOVE": {
"k_4": [],
"k_7": [
{
"allowed": false,
"vs": "k_g"
}
]
}
}
注意 - 这里的关键字“ADD”和“REMOVE”是静态的,但“k_number”或“k_letter”形式的任何东西都是动态的,可以是任何东西。
我们将不胜感激。
【问题讨论】:
标签: arrays json couchbase n1ql