Neo4j - 从一个节点穿越到由父节点间接连接的另一个节点

问题描述:

我有一个特定的案例,我有两个标签Person和Company。 人有两个节点X和Y,公司有一个单一节点。 这两人都与公司HAS_EMPLOYEE有关系。Neo4j - 从一个节点穿越到由父节点间接连接的另一个节点

我想找到X和Y之间的关系,即他们为同一公司工作。

如何在Neo4j中做到这一点?只给出节点X和Y?

这取决于您是否正在寻找特定的连接(通过公司节点),或者只是寻找任何连接。

假设:人员节点有一个名称,并且该人员节点X和Y具有名称'x'和'y',因此我们可以与他们匹配。我们还要说你有一个索引:人名(姓名),以便我们可以快速查找节点。

如果我们想要的查询是“做的人x和y共享相同的公司”,查询此,在问题返回公司,是:

match (x:Person{name:'x'})<-[:HAS_EMPLOYEE]-(comp:Company)-[:HAS_EMPLOYEE]->(y:Person{name:'y'}) 
return comp 

但是,如果我们不知道如何这些人是连接在一起的,或者即使他们连接上了,那么我们可能会希望在节点之间运行一个shortestPath()匹配,并查看连接它们的东西。

它有助于设置此匹配的上限。现在让我们使用8跳最大值。

match path=shortestPath((x:Person{name:'x'})-[*..8]-(y:Person{name:'y'})) 
return path 
+0

我正在寻找最短路径,我们不知道有公司与他们有关。完美的答案。 –