2016-02-07 5 views
7

Я хочу иметь возможность получить update/enlarge базу данных Neo4j, загрузив более новую версию этой базы данных ИЛИ часть этой базы данных.Neo4j Добавить/обновить свойства, если узел существует

Из того, что я нашел, я могу использовать MERGE до add новых узлов, только если они еще не существуют. Но в этом процессе, как мне сделать slimmed способом add новые свойства для этого существующего узла, если они не существуют?

I e, если у меня есть узел 'John' of 'Age:34' and 'Hair:brown' и выгрузка 'John'/'Age:34'/'Coat:Yellow' - как я могу получить 'John'/'Age:34'/'Hair:brown'/'Coat:Yellow'.

ответ

13

Вы можете объединить узел на John (или первичный идентифицирующий атрибут). Затем задайте свойства после успешного слияния.

Вы можете установить их сразу с картой все атрибуты

merge (n:Node {name: 'John'}) 
set n = {name: 'John', age: 34, coat: 'Yellow', hair: 'Brown'} 
return n 

Если вы просто хотели заменить атрибуты возраст и пальто, вы могли бы сделать это вместо.

merge (n:Node {name: 'John'}) 
set n.age = 34, n.coat = 'Yellow' 
return n 

Или вы можете добавить его в качестве карты тоже

merge (n:Node {name: 'John'}) 
set n += {age: 34, coat: 'Yellow'} 
return n 
+0

Большое спасибо! выглядит многообещающим :) просто для того, чтобы уточнить: если я устанавливаю свойство узлу, который уже имеет это свойство, может ли он получить два? может ли Джон иметь два возраста, оба из 34? если я установил 5 свойств для узла, станет ли он всеми свойствами этого узла, то будут ли удалены свойства «другого»? – user1806627

+1

В атрибутах будет заменено то, что вы предоставляете. В первом примере вся запись будет заменена парами атрибут/значение на карте. В следующем примере будут затронуты только указанные атрибуты; обратите внимание на использование оператора составного присваивания ('+ =') в третьем примере. У вас не будет два возраста, если вы установите возраст, а один уже существует. Чтобы достичь этого, вам сначала нужно немного поиграть. –

+0

Как можно объединить имя с кратным именем? – Vinod

Смежные вопросы