Как переместить значения в массив свойств 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, объединение получит второй параметр, который является пустым массивом.