Есть ли причудливый или хитрый способ применить произвольный массив jsonpatch к картам с шифром или даже apoc?
Так что, если у меня есть
- карта
{a: 0, b: 0, c: 0}
- набор операций, закодированных в картах, скажем
[{replace: "a", value: 1}, {replace: "b", value: 1}]
.Я знаю, что это не релейный jsonpatch, но это все, что мне нужно.Если есть полноценное решение jsonpatch, даже лучше.
Я ищу процедуру, объединение процедур или аккуратный способ в шифре, который производит {a: 1, b: 1, c: 0}
Есть apoc.map.setKey(map, key, value)
найдено в https://neo4j -contrib.github.io / neo4j-apoc-процедуры / # _ map_functions , но оно манипулирует только одним значением одновременно.Я попытался объединить это с FOREACH
, но от Cypher, мне нужно действительно мутировать карту, а не узел.
моя попытка была
create (:TEST {a: 0, b: 0, c: 0});
match (t:TEST)
with t, [{replace: "a", value: 1}, {replace: "b", value: 1}] as refs
foreach(ref in refs
| set t = apoc.map.setKey(properties(t), ref.replace,
ref.value))
return *;
Конечно, я могвсегда позволяйте клиенту выполнять операции jsonpatch, но я предпочитаю способ сделать это в рамках tx.Я знаю, что сам мог бы написать процедуру в качестве крайней меры.