Neo4j 基于另一类型的节点顺序地将特定类型的节点彼此链接

Neo4j 基于另一类型的节点顺序地将特定类型的节点彼此链接,neo4j,cypher,Neo4j,Cypher,我希望将与不同于先前节点的节点关联的类型的所有节点彼此链接。我将用图表来解释这一点。下面是我创建的图形的虚拟表示:- 命令: // Movies are unique values in the dataset. LOAD CSV WITH HEADERS FROM "actors_movies.csv" AS dataset CREATE (m:Movie{movie:dataset.name}) MERGE (a:Actor{name:dataset.actor}) MERGE (a)-[

我希望将与不同于先前节点的节点关联的类型的所有节点彼此链接。我将用图表来解释这一点。下面是我创建的图形的虚拟表示:- 命令:

// Movies are unique values in the dataset. 
LOAD CSV WITH HEADERS FROM "actors_movies.csv" AS dataset
CREATE (m:Movie{movie:dataset.name})
MERGE (a:Actor{name:dataset.actor})
MERGE (a)-[:ACTED{year:dataset.year}]->(m)
我希望我的图表如下所示,如果我查询一个演员,我应该能够遍历他们在一个系列中扮演的所有电影:


我请求查询以创建上面提到的图形。

好的,如果您只需要图形结果,则可以使用via。这将允许您创建虚假的虚拟关系,这些关系实际上不存在于图形中,但可以在图形结果视图中可视化。请记住,这些仅在查询期间有效,它们不会保存到图形中,您需要在希望查看它们的每个查询中创建虚拟关系

以下是一个适用于电影图表的示例:在neo4j浏览器中播放电影:

MATCH (k:Person{name:'Keanu Reeves'})-[:ACTED_IN]->(m:Movie)
WITH k, m
ORDER BY m.released ASC
WITH k, apoc.coll.pairsMin(collect(m)) as pairs // list of pairs of adjacent nodes
UNWIND pairs as pair
CALL apoc.create.vRelationship(pair[0], 'NEXT_MOVIE', {year:pair[1].released}, pair[1]) YIELD rel
RETURN k, pair[0] as m1, pair[1] as m2, rel
请记住,如果您确实希望将这些内容保存在图形中,则需要为每个演员提供一条通过这些电影的路径,因此您创建的关系需要具有类似actorId属性的内容,这样,当您需要匹配某个演员的电影路径时,您需要确保所有:下一部电影关系都需要该演员的id


这是唯一能让你理智行事的方法,否则你就不知道该处理哪些关系,因为你需要知道哪些关系属于哪位演员。

你是在要求像约翰·威克、星球大战和《黑客帝国》这样的系列电影之间的关系吗,或者你是在问电影之间的关系,基于演员拍摄的顺序,所以如果一个演员只在一部系列电影中的一部电影中工作,而不在其他电影中,在拍摄其他电影之后,他们只需要在他们拍摄过的电影之间建立关系。所以,在示例电影数据库中,每个:电影都有一个已发布的属性。你能用它来代替你的恋爱关系吗?嘿,猎鹰,很抱歉回复晚了。演员们需要在他们所拍摄的电影之间建立关系。您可以使用released属性,因为我给出的只是代表性的。最后,我的要求是以图形方式按时间顺序观看一个人所演的所有电影。再次感谢InverseFalcon。看起来我需要的是虚拟关系。