如果我的节点(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 *
答案 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)