我有一个特定的案例,我有两个标签人和公司。 Person有两个节点X和Y,公司有一个单节点。 两人都与公司HAS_EMPLOYEE有关系。
我想找到X和Y之间的关系,即它们适用于同一家公司。
如何在Neo4j中做到这一点?只给出节点X和Y?
答案 0 :(得分:1)
这取决于您是否正在寻找特定连接(通过:公司节点),或者只是寻找任何连接。
让我们说:人员节点有一个名字,那个人节点X和Y的名字是' x'并且' y',所以我们可以匹配它们。我们还要说你有一个索引:Person(name),这样我们就可以快速查找节点。
如果我们想要的查询是" 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