Узлы доступа к шифру с переменной длиной пути

У меня есть следующая проблема:

У меня есть предложение MATCH, подобное этому:

MACTH (A)-[*1..]->(B)

Теперь, если этот шаблон совпадает, мне нужно каким-то образом продублировать часть -[*1..]-> и заменить в ней все узлы определенного типа узлами другого типа.

например, если бы у меня был этот график:

(X1:A)-[:r]->(X2:B)-[:r]->(X3:E)-[:r]->(X4:A)

Я мог бы захотеть получить этот график после применения правила MACTH (A:A)-[*1..]->(B:A) something something

(X1:A)-[:r]->(X2:B)-[:r]->(X3:E)-[:r]->(X4:A) , (X1)-[:r]->(X5:C)-[:r]->(X3)-[:r]->(X4)

продублировав путь между (A) и (B) и заменив все узлы типа B на тип C

Но как я могу получить доступ к -[*1..]-> части запроса?


person lo tolmencre    schedule 16.03.2016    source источник


Ответы (1)


Попробуй это

Match (p:Person)-[:RELATED*1..]->(e) 
with collect(distinct(id(e))) as ids Match (c:Country) where id(c) in ids 
remove c:Country set c:NewLabel 
return *

по данным

Create (p:Person)-[:RELATED]->(b:Person)-[:RELATED]->(c:Client)-[:RELATED]->(e:Country) return *
person Evgen    schedule 16.03.2016
comment
Это изменяет метку c. Однако как мне скопировать этот новый путь, чтобы получить обе версии c (c:Country и c:NewLabel)? - person lo tolmencre; 16.03.2016
comment
Я так и не понял, что вы хотите получить в своей базе данных в итоге? Должны ли быть два разных узла, один с меткой Country, другой с меткой NewLabel? - person Evgen; 16.03.2016
comment
Да, точно. Я хочу продублировать путь и в дублирующем пути изменить узлы с меткой 1 на узлы с меткой 2. - person lo tolmencre; 16.03.2016
comment
Насколько я понял, есть еще одна проблема скопировать весь путь. Чтобы справиться с этим, существует экспериментальная установка neo4j.com/docs/stable/ А также вы можете посмотреть этот вопрос stackoverflow.com/questions/35586224/ Может быть, есть другой способ, но моих знаний недостаточно, чтобы ответить на него - person Evgen; 16.03.2016