Создание новых отношений из пути (neo4j) - PullRequest
0 голосов
/ 03 апреля 2019

Я пытаюсь построить новое отношение из возвращенного пути allshortpath.

$
MATCH (p1:Category {catName: "Main_topic_classifications"}), 
(p2:Category {catName: "Monarchs_of_the_Bulgars"}),
path = allShortestPaths((p2)-[:SUBCAT_OF*]->(p1))

FOREACH (s IN rels(path) | 
  MERGE (startNode(s))-[:NEW_SUBCAT]->(ENDNODE(s)))

Однако, когда я запускаю этот предыдущий запрос, я получаю эту ошибку:

Neo.ClientError.Statement.SyntaxError: Invalid input '(': expected an identifier character, whitespace, NodeLabel, a property map or ')' (line 5, column 24 (offset: 248))
"      MERGE (:startNode(s))-[:NEW_REL]->(:ENDNODE(s)))"
                                          ^

1 Ответ

1 голос
/ 03 апреля 2019

Язык Cypher не позволяет шаблону узла содержать функцию, которая возвращает узел (хотя это было бы очень удобно).

Этот запрос (который сначала создает переменные узла s и e, чтобы их можно было использовать в шаблонах узлов) должно работать для вас:

MATCH
  (p1:Category {catName: "Main_topic_classifications"}), 
  (p2:Category {catName: "Monarchs_of_the_Bulgars"}),
  path = allShortestPaths((p2)-[:SUBCAT_OF*]->(p1))
UNWIND RELATIONSHIPS(path) AS rel
WITH STARTNODE(rel) AS s, ENDNODE(rel) AS e
MERGE (s)-[:NEW_SUBCAT]->(e)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...