Как переместить значения в массив свойств Cypher-Neo4j
Я новичок в Neo4j, у меня есть два узла user
и files
с отношением :contains
, отношение имеет свойство id
, которое представляет собой массив, представленный как
(:user)-[:contains{id:[12345]}]->(:files)
Однако я хочу заполнить массив свойств id
значениями 1111
и 14567
последовательно с помощью запросов Cypher
, я не нахожу какой-либо метод для ввода значений в массив.
после вставки 1111 в свойство id
будет
(:user)-[:contains{id:[12345,1111]}]->(:files)
после вставки 14567 в свойство id
будет
(:user)-[:contains{id:[12345,1111,14567]}]->(:files)
Я не знаю, как заполнять значения в массиве свойств последовательно
Пожалуйста, помогите, спасибо заранее
Ответы
Ответ 1
Добавление значений в массив аналогично увеличению целого числа или конкатенации строки и означает то же самое в вашем случае (пусть c
будет вашим [c:contains {id:[12345]}]
)
c.id = c.id + 1111 // [12345,1111]
c.id = c.id + 14567 // [12345,1111,14567]
или
c.id = c.id + [1111,14567] // [12345,1111,14567]
Ответ 2
В дополнение к ответу jjaderberg в случае, если один из атрибутов является нулевым
SET n.id = coalesce(n.id, []) + n.additionalId
Объединение проходит через разделенный запятыми список в скобках слева направо и пропускает нулевые значения.
Так что в этом случае, если n.id изначально равен Null, объединение получит второй параметр, который является пустым массивом.