Подтвердить что ты не робот

В Cypher, как я могу создать отношения, если он не существует; обновить свойство, если оно

В Cypher в Neo4J, учитывая два узла, если нет никакой связи между ними, я хотел бы создать отношение (типа Foo) с весовым значением одного. Если это соотношение уже существует, я хотел бы увеличить его весовое свойство.

Есть ли хороший способ сделать это в одном запросе Cypher? Спасибо!

Изменить: Дополнительные сведения: Узлы уже созданы, уникальны и в индексе.

4b9b3361

Ответ 1

Именно поэтому мы добавили CREATE UNIQUE в 1.8.

START a=node(...), b=node(...)
CREATE UNIQUE a-[r:CONNECTED_TO]-b
SET r.weight = coalesce(r.weight?, 0) + 1

Подробнее о CREATE UNIQUE здесь, вопросительный знак here и объединить .

Ответ 2

Чтобы ответить Andres, знак вопроса в конце свойства теперь является ошибкой с Neo4j 2. Таким образом, запрос будет:

MATCH a, b
WHERE a(...) AND b(...)
CREATE UNIQUE a-[r:CONNECTED_TO]->b
SET r.weight = coalesce(r.weight, 0) + 1