我将如何查询这两个节点之间的关系?

时间:2018-06-22 04:24:32

标签: neo4j

如果我的节点(p)和(e)的图看起来像这样:

(p:Person)-[r:WorksFor]->(e:Employer)

我有以下数据:

(Person {name: Andrew})-[r:WorksFor]->(Employer {name: Google})
(Person {name: James})-[r:WorksFor]->(Employer {name: Google})
(Person {name: James})-[r:WorksFor]->(Employer {name: Apple})
(Person {name: Evan})-[r:WorksFor]->(Employer {name: Apple})

我如何通过每种关系在(Person {name:Evan})之间进行查询,然后到达(Person {name:Andrew})之间,返回每个雇主和个人以及中间有任意数量的雇主和个人?

理想情况下,上面的代码将返回如下所示的链:

(Andrew)->(Google)->(James)->(Apple)->(Evan)

谢谢您的帮助。

(编辑)附录:

以下内容似乎可行,但仅当玩家分开两个角度时,有没有办法使长度完全可变?

MATCH 
(p:Person {name: "Andrew"})-->(e:Employer)<--(p3:Person)-->(e2:Employer)<--(p2:Person {name: "Evan"}) 
RETURN *

1 个答案:

答案 0 :(得分:0)

您想要here

根据图形,您可以定义要遍历或忽略类型的关系。我们可以省略方向以指定我们不关心关系的遍历方向:

$objectManager = Magento\Framework\App\ObjectManager::getInstance();
$orders = $objectManager->get('Magento\Sales\Model\Order')

如果要在路径中包含节点,则可以返回MATCH path = (p:Person {name: "Andrew"})-[:WorksFor*]-(p2:Person {name: "Evan"}) RETURN path 以获取该列表。

如果只希望两者之间的最短路径,则可以将两者匹配,然后使用shortestPath函数进行匹配:

nodes(path)