Я пытаюсь написать запрос на обновление 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"
}
]
}
}
Примечание. Здесь ключевые слова «ДОБАВИТЬ» и «УДАЛИТЬ» являются статическими, но все в форме «k_number» или «k_letter» является динамическим и может быть любым.
Любая помощь будет высоко оценена.