从查询结果neo4j创建新关系
我想从一个节点和一组节点之间最短路径的结果建立新的关系。我目前正在使用此查询执行此任务,但在两个节点之间,它运行得非常好:从查询结果neo4j创建新关系,neo4j,cypher,Neo4j,Cypher,我想从一个节点和一组节点之间最短路径的结果建立新的关系。我目前正在使用此查询执行此任务,但在两个节点之间,它运行得非常好: MATCH (p1:Category {catName: "Main_topic_classifications"}), (p2:Category {catName: "Monarchs_of_the_Bulgars"}), path = allShortestPaths((p2)-[:SUBCAT_OF*]->(p1)) UNWIND RELATION
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)
如何对该查询进行泛化,以返回p2 Monars_of the_Bulgars和节点列表p1=[健康、历史、人性]之间的所有最短路径列表,而不是像上一个查询那样返回一个节点
感谢您的帮助。这应该可以:
MATCH (p1:Category)
WHERE p1.category IN ["Health", "History", "Humanity"]
MATCH
(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)
[更新]
如果p1还必须是Top_Main_分类的直接子类别,则可以执行以下操作:
MATCH (p1:Category)-[:SUBCAT_OF]->(main:Category {catName: "Main_topic_classifications"})
WHERE p1.category IN ["Health", "History", "Humanity"]
MERGE (p1)-[:NEW_SUBCAT]->(main)
MATCH
(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)
谢谢你的帮助。我是否可以在返回的路径上再施加一个条件,在该路径中,顶级节点的运行状况、历史记录等必须连接到顶级主分类节点,即p1->top\u main\u classification?我修改了更新,以便在p1节点和主节点之间创建新的子类别关系。