2015-06-04 4 views
1

Я хочу изменить запрос MERGE Cypher, чтобы поле свойства не было перезаписано.Neo4j: когда слияние не перезаписывает свойства узла

Для обновления свойств узла я использую следующий Cypher запрос:

MERGE (n:Person {name:"me"}) ON MATCH SET n+={id:"2"} ON CREATE SET n={name:"me", id="1"} RETURN n

Если я снова вызвать тот же самый запрос с ON MATCH SET n+={id:"3"} идентификатор будет обновляться.

Как сделать запрос, который добавляет свойство, если он не существует, но не перезаписывает его, если он уже присутствует?

ответ

1

Во-первых, вы можете просто использовать простые свойства, не нужно делать {карта} ..

Во-вторых, в случае MERGE создает узел, он уже будет иметь имя свойства: мне на нем:

MERGE (n:Person {name:'me'}) 
ON MATCH SET n.id = 2 
ON CREATE SET n.id = 1 
RETURN n 
Смежные вопросы