У меня есть свойство строкового массива, например:
["name1", "name2", "name3", "name2", "name4"]
Я хотел бы заменить в этом массиве, например, «name2» на «name5»:
["name1", "name5", "name3", "name5", "name4"]
До сих пор я придумал такой запрос:
MATCH (parent)-[rel]->(child)
WHERE 'name2' IN rel.names
SET rel.names = [x IN (rel.names+['name5']) WHERE x<>"name2"]
В результате получается почти то, что я хочу: ["name1", "name3", "name4", "name5"]
Проблема этогозапрос очевиден - он просто добавляет только один раз «name5» статически, не проверяя, как часто «name2» находится в массиве. Например, если у меня есть "name2" n-times , запрос только добавляет one"name5" вместо n-times.
Без «where» в запросе добавляется «name5» к массивам, в которые даже не включено «name2». Правильный подход должен заключаться в том, что вместо этого запрос должен найти 0 раз «name2» и добавить 0 раз «name5». Так что часть где не должна быть обязательной. Как бы вы решили проблему, и подходит ли мое решение к правильному пути?