Ответ 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 и объединить .
В Cypher в Neo4J, учитывая два узла, если нет никакой связи между ними, я хотел бы создать отношение (типа Foo) с весовым значением одного. Если это соотношение уже существует, я хотел бы увеличить его весовое свойство.
Есть ли хороший способ сделать это в одном запросе Cypher? Спасибо!
Изменить: Дополнительные сведения: Узлы уже созданы, уникальны и в индексе.
Именно поэтому мы добавили 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 и объединить .
Чтобы ответить 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