是否有一种简单的方法可以在现有的Neo4j中建立新的关系?
从教程中使用的actor-director-movie数据库开始,我想要做的是让图中的所有{(actor1),(actor2)}对节点满足关系:
(actor1) - [:ACTED_IN] - GT;(电影)LT - [:ACTED_IN] - (actor2)
并使用它们来创建一个新的关系,如:
(actor1) - [:ACTED_IN_THE_SAME_MOVIE_AS] - (actor2)
无论方向(我对有向图和无向图都感兴趣)。 有没有办法用简单的Cypher查询来做到这一点?
非常感谢,
STE
答案 0 :(得分:5)
使用示例影片数据集:
MATCH (actor1:Person)-[:ACTED_IN]->(:Movie)<-[:ACTED_IN]-(actor2:Person)
WITH actor1, actor2
MERGE (actor1)-[:ACTED_IN_THE_SAME_MOVIE_AS]-(actor2)
答案 1 :(得分:2)
我会这样做:
MATCH (actor1)-[:ACTED_IN]->()<-[:ACTED_IN]-(actor2)
CREATE UNIQUE (actor1)-[:ACTED_IN_THE_SAME_MOVIE_AS]-(actor2)
这基本上就是你所说的。关系是单向的(没有办法),但api(Cypher查询或遍历)可以双向读取它们(所以在某些情况下创建它们的方式并不重要)。 要检查您所做的是否正常,您可以运行以下命令:
MATCH (actor1)-[:ACTED_IN_SAME_MOVIE]-(actor2)
RETURN actor1, actor2